System and method for creation and handling of configurable applications for website building systems

ABSTRACT

A website building system (WBS) includes a database of website components and definitions and instances of website building system configurable applications (WCAs), where the WCAs are single packaged entities which can also be accessed as a sets of customizable elements; a WCA app builder to enable a developer to develop a first version WCA; an in-site editor to provide specific editing capabilities for a user to edit at least one of a definition or an instance of the first version WCA and a WCA handler to receive a modification to the first version WCA from the user and an update to the first version WCA from the developer, the WCA handler to merge between the modification and the update to create a changed WCA, to resolve conflicts or loss of functionality and to handle permissions between the modification and the update.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. provisional patentapplications 62/760,965 filed Nov. 14, 2018 and 62/927,703, filed 30Oct. 2019 both of which are incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to website building systems generally andto configurable applications in particular.

BACKGROUND OF THE INVENTION

Visual editing systems, typically used in website building systems, areused by both novices and professionals to create interactive websites.Existing website building systems are based on a visual editing modeland most website building systems typically provide multiple templates,with a template possibly including a complete sample website, a websitesection, a single page or a section of a page.

Website building system users (also known as designers, subscribers,subscribing users or site editors) may design the website and thewebsite's end-users (the “users of users”) may access the websitescreated by the users. Although end-users typically access the system inread-only mode, website building systems (and websites) may allowend-users to perform changes to the web site such as adding or editingdata records, adding talkbacks to news articles, adding blog entries toblogs etc. The website building system may in fact allow multiple levelsof users (i.e. more than two levels), and assign different permissionsand capabilities to each level. Users of the website building system (inparticular in the full or partial on-line configurations describedbelow) may register in the website building system server which managesthe users, their web sites and accesses by the end-users.

A website building system may be a standalone system, or may be embeddedinside a larger editing system. It may also be on-line (i.e.applications are edited and stored on a server), off-line or partiallyon-line (with web sites being edited locally but uploaded to a centralserver for publishing). The website building system may use an internaldata architecture to store website building system based sites and thisarchitecture may organize the handled sites' internal data and elementsinside the system. This architecture may be different from the externalview of the site (as seen, for example, by the end-users). It is alsotypically different from the way the HTML pages sent to the browser areorganized.

For example, the internal data architecture may contain additionalproperties for each element in the page (creator, creation time, accesspermissions, link to templates, SEO (search engine optimization) relatedinformation etc.) which are relevant for the editing and maintenance ofthe site in the website building system, but are not externally visibleto end-users (or even to some editing users). The website buildingsystem may implement some of its functionality (including both editingand run-time functionality) on a server or server set, and some of itsfunctionality on client elements. The website building system may alsodetermine dynamically whether to perform some functionality on theserver or on the client platform.

A website building system typically handles the creation and editing ofvisually designed applications (such as a website) consisting of pages,containers and components. Pages may be separately displayed and containcomponents. Components may include containers as well as atomiccomponents.

The website building system may support hierarchical arrangements ofcomponents using atomic components (text, image, shape, video etc.) aswell as various types of container components which contain othercomponents (e.g. regular containers, single-page containers, multi-pagecontainers, gallery containers etc.). The sub-pages contained inside acontainer component are referred to as mini-pages, and each of which maycontain multiple components. Some container components may display justone of the mini-pages at a time, while others may display multiplemini-pages simultaneously.

The components may be content-less, or have internal content. An exampleof the first category is a star-shape component, which does not have anyinternal content (though it has color, size, position and some otherparameters). An example of the second category is a text paragraphcomponent, whose internal content includes the internal text as well asfont, formatting and layout information. This content may, of course,vary from one instance of the text paragraph component to another.Components which have content are often referred to as fields (e.g. a“text field”).

Pages may use templates, general page templates or component templates.Specific cases for templates include the use of an application masterpage containing components replicated in all other regular pages, andthe use of an application header or footer (which repeat on all pages).Templates may be used for the complete page or for page sections. Thewebsite building system may provide inheritance between templates, pagesor components, possibly including multi-level inheritance, multipleinheritance and diamond inheritance (i.e. A inherits from B and C andboth B and C inherit from D).

The visual arrangement of components inside a page is called a layout.The website building system may also support dynamic layout processing,a process whereby the editing of a given component (or other changesaffecting it such as externally-driven content change) may affect othercomponents, as further described in U.S. Pat. No. 10,185,703 entitled“Website Design System Integrating Dynamic Layout and Dynamic Content”granted 22 Jan. 2019 and assigned to the common assignee of the presentinvention and incorporated herein by reference.

A website building system may be extended using a third partyapplication and its components as well list applications (such asdiscussed in US Patent Publication No. US 2014/0282218 entitled “WebsiteBuilding System Integrating Data Lists with Dynamic Customization andAdaptation” published 18 Sep. 2014 and assigned to the common assigneeof the present invention and incorporated herein by reference). Thesethird party applications and list applications may be added andintegrated into designed websites.

Such third party applications and list applications may be purchased (orotherwise acquired) through a number of distribution mechanisms, such asbeing pre-included in the website building system design environment,from an Application Store (integrated into the website building systemor external to it) or directly from the third party application vendor.

The third party application may be hosted on the website building systemvendor's own servers, the third party application vendor's server or ona 4th party server infrastructure.

The website building system may also allow procedural code to be addedto some or all of the system's entities. Such code could be written in astandard language (such as JavaScript), an extended version of astandard language or a language proprietary to the specific websitebuilding system. The executed code may reference Application ProgrammingInterfaces (API's) provided by the website building system itself orexternal providers. The code may also reference internal constructs andobjects of the website building system, such as pages, components andtheir attributes.

The procedural code elements may be activated via event triggers whichmay be associated with user activities (such as mouse move or click,page transition etc.), activities associated with other users (such asan underlying database or a specific database record being changed byanother user), system events or other types of conditions.

The activated code may be executed inside the website building system'sclient element, on the server platform or by using a combination of thetwo or a dynamically determined execution platform. Such a system isdescribed in US Patent Publication No. US 2018/0293323 entitled “Systemand Method for Smart Interaction Between Website Components” published11 Oct. 2018 and assigned to the common assignee of the presentinvention and incorporated herein by reference.

Typical site creation may be based on a number of models, including avisual editing model (in which the user edits a previously created site)and an automatic site generation model or a combination thereof asillustrated in FIG. 1 to which reference is now made and is described inU.S. Pat. No. 10,073,923 entitled “System and Method for the Creationand Update of Hierarchical Websites Based on Collected BusinessKnowledge” granted 11 Sep. 2018 and assigned to the common assignee ofthe present invention and incorporated herein by reference.

It will be appreciated that throughout the specification, the acronymWBS may be used to represent a website building system. FIG. 1illustrates a system 100 that comprises a typical website buildingsystem 5 in communication with client systems operated by WBS vendorstaff 61, a site designer 62 (i.e. a user), a site user 63 (i.e. user ofuser) and with external systems 70. Website building system 5 mayfurther comprise a WBS (website building system) site manager 10, anobject marketplace 15, a WBS RT (runtime) server 20, a WBS (websitebuilding system) editor 30, a site generator system 40 and a WBS contentmanagement system (CMS) 50. It will be appreciated that the elements ofFIG. 1 may function as described in U.S. Pat. No. 10,073,923.

In the visual editing model, the user (designer) edits a site based onone or more website templates. The website building system provider mayprovide multiple site (or other) templates, with each template possiblyincluding a complete sample web site, a web site section, a single pageor a section of a page. Users may have the option to start with an emptysite (essentially a “blank page” template) but would typically startwith an actual site template.

The WBS provider may provide site templates ranging from the verygeneric (e.g. mobile site, e-store) through the more specific (e.g. lawoffice, restaurant, florist) to the highly specific ones (e.g. acommercial real-estate law office or a Spanish tapas restaurant). Suchtemplates are typically stored in a repository accessible to users ofthe website building system and are typically classified according tobusiness type, sub-type or industry. Templates may also be created (andclassified) according to style, color range or other parameters and notjust according to business type. Site templates may be extended withadditional (typically back-end) functionality, services and code inorder to become full-fledged vertical solutions integrated with thewebsite building system.

Thus, the user's first experience when creating a site using a websitebuilding system visual editor may typically be that the user chooses atemplate (e.g. according to style or industry type/sub-type), possibly ablank template and then edits the template in the visual editorincluding the editing of content, logic, layout and attributes. Suchediting may include (in particular) adapting the template and itselements to the details of the user's business. The user may thenpublish the modified site.

Under the site generation model, the website building system generatesan initial site for the user, based on a selected template, possiblymodified by filling-in common elements of information, and possiblyallowing follow-up editing of the generated site. This filling-in isrequired as various pieces of information (such as the business name ora description of the management team) are included in multiple locationsin the template's pages. Thus, the user may have to change the businessname (for example) in multiple places throughout the template.

Furthermore, some template elements (e.g. a generic product page) mayappear multiple times, with each instance displaying the details of adifferent instance of an underlying entity (e.g. different productsoffered in the site). Such multiple instances may be manually specified(e.g. the details of different persons in the company's management team)or dynamically derived from an external database (e.g. product detailsfrom the “products on sale” database). Such an arrangement is oftenknown as a “repeater”.

The template may also include fields. For example, the website buildingsystem may allow the template designer to specify fields (also known as“placeholders”) for the insertion of values inside the templates, suchas {CompanyName}, {ProductName}, {ProductPrice} etc. The user may alsospecify the values for the fields defined in the template selected forthe website.

The website building system may allow the user to enter simple orcomplex values (e.g. text and images), as well as additional (non-field)information such as selection of included pages or web site areas,colors, style information, links, formatting options, website displayoptions, decoration elements (such as borders and backgrounds) etc.

The website building system may also allow the user to enter some ofthis additional information before selecting a template, and use thisinformation to help in selecting a template (e.g. by narrowing the setof proposed templates). For example, the user may select a certaingeneric color scheme (e.g. pastel colors) or style (e.g.business/formal), and the system may then use this selection to narrowthe set of proposed templates.

The system may also display a series of views or questionnaires to allowthe user to enter values or selections (for both the defined fields andthe additional information above). The system may further create aconnection (or binding) between a multiple-instance element of thetemplate (as described herein above) and an internal or externaldatabase which provides the data instances used to generate thedisplayed instances.

Once a template has been selected and its fields and additionalinformation have been specified (e.g. through the questionnaires orthrough binding to data sources), the website building system maygenerate the website containing the combined information. The user maythen publish the site (through the website building system orotherwise).

A website building system may perform semi-automatic site creation usinga different model as described in U.S. Pat. No. 10,073,923. Under thismodel, the system gathers information on the user and his web siterequirements from multiple sources which may include, for example:user-filled questionnaires; existing user presence (such as existing websites or social media presence), industry sources (such as general tradeweb sites), off-line information and internal system repositories whichprovide information on specific business types, such as basic templateinformation for specific business types (lawyers, restaurants, plumbers,graphic designers etc.), possibly refined for specific industries (e.g.distinguishing between real-estate lawyers and personal injury lawyers).

The system may also gather external information from other sites, bothinternal and external to the system. Such information may affect, forexample, the selection of offered questionnaires and layout elements,proposed defaults etc. Such information may also typically be collectedon a statistical or summary basis, in order not to expose informationbelonging to any single user, and protect users' privacy, anonymity andlegal rights (such as copyrights). Such information may be located basedon information provided by the user which may be direct (e.g. anexisting website address) or indirect (a business name and geographicaladdress which can be used to locate information about the business).

The gathered information is analyzed and arranged into a repository ofcontent elements which are then mapped onto layout elements whichpresent the content from the content elements and combine the layoutelements to form the site. The layout element mapping, selection andcombination process may be fully automatic or semi-automatic (i.e.including user interaction).

To support the above mentioned functionality above, a website buildingsystem will typically maintain a series of repositories, stored over oneor more servers or server farms. Such repositories may typically includevarious related repositories such as a user information/profilerepository, a WBS (website building system) component repository, a WBSsite repository, a Business Intelligence (BI) repository, an editinghistory repository, a third party application store repository, etc. Thesystem may also include site/content creation related repositories suchas a questionnaire type repository, a content element type repository, alayout element type repository, a design kit repository, a filledquestionnaires repository, a content element repository, a layoutelement repository, a rules repository, a family/industry repositoryetc. A description of these repositories may be found in U.S. Pat. No.10,073,923.

SUMMARY OF THE PRESENT INVENTION

There is provided, in accordance with a preferred embodiment of thepresent invention, a website building system. The system includes atleast one database storing website components, together with definitionsand instances of website building system configurable applications(WCAs), where the WCAs are single packaged entities which can also beaccessed as a sets of customizable elements; a WCA app builder to enablea developer to build and edit a first version WCA; an in-site editor toprovide specific editing capabilities for a user to edit at least one ofa definition or an instance of the first version WCA; a WCA handler toreceive at least one modification to the first version WCA from the userand at least one update to the first version WCA from the developer, theWCA handler to merge at least between the at least one modification andthe at least one update to create a changed WCA, the WCA handler to alsoresolve conflicts or loss of functionality and to handle permissionsbetween the least one modification and the at least one update and a WCAsite viewer to support viewing of the first version WCA and the changedWCA during runtime of the website building system.

Moreover, in accordance with a preferred embodiment of the presentinvention, the at least one database also stores website parameters forwebsites built by the website building system and user collectedinformation for a user of the website building system, where the usercollected information is at least one of: geographical location,language, editing history and collected business intelligence.

Further, in accordance with a preferred embodiment of the presentinvention, the WCA handler includes at least one of: a ghost module toensure operation of the changed WCA as a result of a removed elementfrom the first version WCA by at least one of: the at least onemodification, the at least one update and a combination thereof; and amasquerader to safeguard compatibility between a replaced element andthe replacing element of the changed WCA as a result of at least one of:the at least one modification, the at least one update and a combinationthereof to ensure operation of the changed WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the ghost module performs at least one of: fetching theoriginal definition, structure, and attributes of the removed component,providing some or all of the behavior of the removed component based onthe user collected information and simulating an API for the removedcomponent.

Additionally, in accordance with a preferred embodiment of the presentinvention, the masquerader provides a translation facility forinteraction between elements of the changed WCA and the replacingelement using specific translation drivers based on the websiteparameters and the user collected information.

Moreover, in accordance with a preferred embodiment of the presentinvention, the system also includes a WCA manager to provide managementservices for the first version WCA and the changed WCA within thewebsite building system; a WCA CMS coordinator to access at least thewebsite components and the user collected information from the least onedatabase; and for the WCA handler to coordinate activity between the WCAapp builder, the WCA manager, the WCA site viewer, the WCA in-siteeditor and the WCA CMS coordinator.

Further, in accordance with a preferred embodiment of the presentinvention, the system includes at least one of: a WCA app store managerto enable the purchase of a WCA for use in the website building systemand a WCA site generation system (SGS) to generate sites containing thefirst version WCA and the changed WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the WCA app builder includes a customization panel creator toconfigure and generate associated specific customization panels for aWCA; a dialog editor to enable the creation and editing of definitionsfor customizable elements for a WCA and a WCA analyzer to perform atleast one of: recognize repeating or hierarchical elements in thestructure of a WCA; perform static source analysis on a WCA for thecustomization panel creator; perform static source analysis to determineruntime permissions for a WCA and to generate template code.

Still further, in accordance with a preferred embodiment of the presentinvention, the system includes at least one of: a WCA modificationhandler to receive and resolve conflicts between the at least onemodification and the at least one update for the first version WCA; amachine learner (ML)/artificial intelligence (AI) module to employmachine learning and artificial intelligence techniques to providesupport for the resolution of the conflicts and the loss offunctionality for the ghost module and the masquerader and to providemerging support for the WCA modification handler; an ApplicationProgramming Interface (API) handler to replace at least the firstversion WCA with at least one other WCA having an identical or similarAPI; an alert provider to provide alerts regarding implementation anduse of the WCA handler; a feedback provider to gather information andprovide analysis on general WCA instance changes and a databaseconnector to check for field types and previous connections made by theuser or other users of the at least one WCA.

Additionally, in accordance with a preferred embodiment of the presentinvention, the WCA modification handler includes an update receiver toreceive the at least one modification and the at least one update to thefirst version WCA; an API analyzer to analyze the pre-packaged API of anexisting WCA to detect the API properties and interfaces and to generatea matching settings panel for a changed version of the WCA; a WCA mergerto merge the at least one modification and the at least one update tocreate the changed WCA from the first version WCA; a change resolver toresolve conflicts between the at least one modification and the at leastone update; a permission determiner to determine and apply anypermission restrictions for the at least one modification and the atleast one update and to determine any permissions required at runtimefor the changed WCA and a change applier to apply the at least onemodification and the at least one update to the first version WCAaccording to the WCA merger, the change resolver and the permissiondeterminer to create the changed WCA.

Moreover, in accordance with a preferred embodiment of the presentinvention, the system includes a variant creator to create a new variantWCA based on an existing WCA.

Further, in accordance with a preferred embodiment of the presentinvention, the WCA merger includes a difference analyzer to gather andanalyze the change set between the at least one modification and the atleast one update and a conflict resolver to resolve conflicts betweenthe at least one modification and the at least one update.

Still further, in accordance with a preferred embodiment of the presentinvention, the ML/AI module includes a CMS extractor/trainer to extractand train data from the at least one database; an element behaviortracker/trainer to track the behavior of WCAs and their elements; anelement behavior AL/AI module to learn about the behavior of the WCAsfrom the element behavior tracker/trainer and the CMS extractor/trainer;a merging ML/AI module to learn about merging behaviors of the WCAs fromthe element behavior tracker/trainer and the CMS extractor/trainer and adecision engine to make decisions for the ghost module, the masqueraderand the WCA modification handler based on the element behavior AL/AImodule and the merging ML/AI module.

Additionally, in accordance with a preferred embodiment of the presentinvention, the WCA merger merges according to at least one of: developeror user hints, semantic tags and the output of the decision engine.

There is provided, in accordance with a preferred embodiment of thepresent invention, a method for a website building system. The methodincludes storing in at least one database, website components, togetherwith definitions and instances of website building system configurableapplications (WCAs), where the WCAs are single packaged entities whichcan also be accessed as a sets of customizable elements; enabling adeveloper to build and edit a first version WCA; providing specificediting capabilities for a user to edit at least one of a definition oran instance of the first version WCA; receiving at least onemodification to the first version WCA from the user and at least oneupdate to the first version WCA from the developer; merging at leastbetween the at least one modification and the at least one update;resolving conflicts or loss of functionality and handling permissionsbetween the least one modification and the at least one update; creatinga changed WCA from the merging, the resolving conflicts and the handlingpermissions; and supporting viewing of the first version WCA and thechanged WCA during runtime of said website building system.

Moreover, in accordance with a preferred embodiment of the presentinvention, the storing also stores website parameters for websites builtby the website building system and user collected information for a userof the website building system, where the user collected information isat least one of: geographical location, language, editing history andcollected business intelligence.

Further, in accordance with a preferred embodiment of the presentinvention, the receiving, merging, resolving conflicts and handlingpermissions include at least one of: ensuring operation of the changedWCA as a result of a removed element from the first version WCA by atleast one of: the at least one modification, the at least one update anda combination thereof; and safeguarding compatibility between a replacedelement and the replacing element of the changed WCA as a result of atleast one of: the at least one modification, the at least one update anda combination thereof to ensure operation of the changed WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the ensuring operation of the changed WCA as a result of aremoved element includes performing at least one of: fetching theoriginal definition, structure, and attributes of the removed component,providing some or all of the behavior of the removed component based onthe user collected information and simulating an API for the removedcomponent.

Additionally, in accordance with a preferred embodiment of the presentinvention, the safeguarding compatibility includes providing atranslation facility for interaction between elements of the changed WCAand the replacing element using specific translation drivers based onthe website parameters and the user collected information.

Moreover, in accordance with a preferred embodiment of the presentinvention, the method also includes providing management services forthe first version WCA and the changed WCA within the website buildingsystem; accessing at least the website components and the user collectedinformation from the at least one database and coordinating activitybetween the enabling a developer, the receiving, merging, resolvingconflicts and handling permissions, the providing management services,the providing specific editing capabilities, the supporting viewing andthe accessing.

Further, in accordance with a preferred embodiment of the presentinvention, the method includes at least one of: enabling the purchase ofa WCA for use in the website building system; and generating sitescontaining the first version WCA and the changed WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the enabling a developer to build and edit a first versionWCA includes configuring and generating associated specificcustomization panels for a WCA; enabling the creation and editing ofdefinitions for customizable elements for a WCA; and performing at leastone of: recognizing repeating or hierarchical elements in the structureof a WCA; performing static source analysis on a WCA for the configuringand generating associated specific customization panels; performingstatic source analysis to determine runtime permissions for a WCA andgenerating template code;

Additionally, in accordance with a preferred embodiment of the presentinvention, the method includes at least one of: receiving and resolvingconflicts between the at least one modification and the at least oneupdate for the first version WCA; employing machine learning andartificial intelligence techniques to provide support for the resolutionof the conflicts and the loss of functionality for the ensuringoperation of the changed WCA as a result of a removed element and thesafeguarding compatibility and to provide merging support for thereceiving and resolving conflicts; replacing at least the first versionWCA with at least one other WCA having an identical or similar API;providing alerts regarding implementation of the receiving, merging,resolving conflicts and handling permissions; gathering information andproviding analysis on general WCA instance changes; and checking forfield types and previous connections made by the user or other users ofthe at least one WCA.

Moreover, in accordance with a preferred embodiment of the presentinvention, the receiving and resolving conflicts includes receiving theat least one modification and the at least one update to the firstversion WCA; analyzing the pre-packaged API of an existing WCA,detecting the API properties and interfaces and generating a matchingsettings panel for a changed version of the WCA; merging the at leastone modification and the at least one update to create the changed WCAfrom the first version WCA; resolving conflicts between the at least onemodification and the at least one update; determining and applying anypermission restrictions for the at least one modification and the atleast one update and determining any permissions required at runtime forthe changed WCA and applying the at least one modification and the atleast one update to the first version WCA according to the merging, theresolving conflicts, the determining and applying any permissionrestrictions and creating the changed WCA.

Further, in accordance with a preferred embodiment of the presentinvention, the method includes creating a new variant WCA based on anexisting WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the merging includes gathering and analyzing the change setbetween the at least one modification and the at least one update andresolving conflicts between the at least one modification and the atleast one update.

Additionally, in accordance with a preferred embodiment of the presentinvention, the employing machine learning and artificial intelligencetechniques includes extracting and training data from the at least onedatabase; tracking the behavior of WCAs and their elements; learningabout the behavior of WCAs from the tracking the behavior and theextracting and training data; learning about merging behaviors of WCAsfrom the tracking the behavior of WCA and the extracting and trainingdata and making decisions for the ensuring operation of the changed WCA,the safeguarding compatibility and the receiving and resolving conflictsbased on the learning about the behaviors and the learning about mergingbehaviors.

Further, in accordance with a preferred embodiment of the presentinvention, the WCA includes at least one of: front end elements, backend elements, support elements and content elements.

Still further, in accordance with a preferred embodiment of the presentinvention, the support elements include at least one of: an APIdefinition, a dashboard, UI support panels, rendering support, SEOsupport and app store support, specific manipulation handles, an editingbehavior plug-in and frame elements.

Additionally, in accordance with a preferred embodiment of the presentinvention, the WCA is one of: a single WBS component, a set ofcomponents forming a layout, a set of components forming a new compositecomponent, a page section, a page, a website, a vertical application, adashboard component, a dashboard page and panels.

Moreover, in accordance with a preferred embodiment of the presentinvention, the customizable elements are at least one of: a hierarchicalset of contained components; a component running in the backend;associated code; an API definition; data bindings; and a configurationdialog.

Further, in accordance with a preferred embodiment of the presentinvention, the associated code is encapsulated to provide functionalityfor an associated customizable element.

Still further, in accordance with a preferred embodiment of the presentinvention, the at least one update is according to user changeacceptance rules regarding WCA components and their attributes.

Additionally, in accordance with a preferred embodiment of the presentinvention, that at least one update is by at least one of: inheritance,by reference and by delivery.

Moreover, in accordance with a preferred embodiment of the presentinvention, the delivery is at least one of: internal delivery fromwithin the website building system, external electronic delivery fromoutside the website building system and external physical delivery fromoutside the website building system.

Further, in accordance with a preferred embodiment of the presentinvention, the at least one of: said conflicts is at least one of: afull break and a partial break in the connection between at least twocomponents of the first version WCA and where the connection is at leastone of: a direct connection, a message-based connection and a code-basedconnection.

Still further, in accordance with a preferred embodiment of the presentinvention, at least one of the permissions is the developer defined pereach of the customizable elements.

Additionally, in accordance with a preferred embodiment of the presentinvention, at least one of the permissions is the level of access asdefined by the developer for the user.

Moreover, in accordance with a preferred embodiment of the presentinvention, the level of access is at least one of: the visibility ofelements, the ability to edit elements, the ability to delete elementsand the ability to extend.

Further, in accordance with a preferred embodiment of the presentinvention, the at least one update is a variant creation of the firstversion WCA.

Still further, in accordance with a preferred embodiment of the presentinvention, the at least one: of the conflicts is at least one of:functionality and attribute incompatibility of the customizablecomponents.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter regarded as the invention is particularly pointed outand distinctly claimed in the concluding portion of the specification.The invention, however, both as to organization and method of operation,together with objects, features, and advantages thereof, may best beunderstood by reference to the following detailed description when readwith the accompanying drawings in which:

FIG. 1 is a schematic illustration of a typical representation of awebsite building system of the prior art;

FIGS. 2A and 2B are a listing of the possible sub elements of a websitebuilding system configurable application (WCA), constructed andoperative in accordance with the present invention;

FIG. 3 is a schematic illustration of a system for handling websitebuilding system (WBS) configurable applications (WCA's) in a websitebuilding system, constructed and operative in accordance with thepresent invention;

FIG. 4 is a schematic illustration of the elements of the WCA module ofFIG. 3, constructed and operative in accordance with the presentinvention;

FIG. 5 is a schematic illustration of the various elements of an exampleWCA, constructed and operative in accordance with the present invention;

FIG. 6 is a schematic illustration of special frame elements of a UIassociated with a recipe WCA; constructed and operative in accordancewith the present invention;

FIG. 7A is a schematic illustration of the elements of the WCA handlerof FIG. 4, constructed and operative in accordance with the presentinvention;

FIG. 7B is a schematic illustration of the elements of the ML/AI moduleof FIG. 7, constructed and operative in accordance with the presentinvention;

FIG. 8 is a is a schematic illustration of the elements of the WCAmodification handler of FIG. 7, constructed and operative in accordancewith the present invention;

FIG. 9 is a schematic illustration of a modified version of the WCA ofFIG. 5, constructed and operative in accordance with the presentinvention;

FIG. 10 is a schematic illustration of how different version of a WCAmay be deployed while merging changes made by a WCA user, constructedand operative in accordance with the present invention;

FIG. 11 is a schematic illustration of the elements of the WCA merger ofFIG. 8, constructed and operative in accordance with the presentinvention;

FIG. 12 is a schematic illustration of a WCA attribute tree, constructedand operative in accordance with the present invention;

FIGS. 13A-13E are schematic illustrations of implementations of WCAs,constructed and operative in accordance with the present invention;

It will be appreciated that for simplicity and clarity of illustration,elements shown in the figures have not necessarily been drawn to scale.For example, the dimensions of some of the elements may be exaggeratedrelative to other elements for clarity. Further, where consideredappropriate, reference numerals may be repeated among the figures toindicate corresponding or analogous elements.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

In the following detailed description, numerous specific details are setforth in order to provide a thorough understanding of the invention.However, it will be understood by those skilled in the art that thepresent invention may be practiced without these specific details. Inother instances, well-known methods, procedures, and components have notbeen described in detail so as not to obscure the present invention.

Widgets (also known as web widgets) are known in the art as miniapplications that may be used to provide information to visitors on awebsite or to gather information for other purposes. They are typicallystandalone applications that can be embedded into third party sites byany user on a page where they have rights of authorship. The term widgetmay encompass terms such as search widgets, trackers, new headlines,feeds and other such live apps. They also provide user interfaces thatallow a website designer or website end user to interact with them.

An example widget is that of a travel widget which may allow for theselection of a particular city and have sub functionalities that providefor the pertinent city the weather, a list of upcoming events andattractions and a map of the city. The subfunctions may related so thatclicking on a particular event may open up the map showing the locationof event in question. Furthermore, the map may be downloadable and theuser may be able to adjust its layout to better fit its target platform.

Applicants have realized that if the owner of the particular widget,updates or changes its sub-elements (e.g. deletes the maps sub-elementor modifies the event display sub-element), the code connection betweenthe event sub-element and the map sub-element may become “broken”causing a loss of functionality and a designer may have to “fix” thecode in order for the two to become reconnected or for the widget tofunction without one of these sub-elements. Widgets typically haveinheritance and therefore a change to the code which affects thefunctioning of some part or sub element, will affect other parts/subelements.

Applicant has also realized that in this scenario, the designer of thewebsite using the widget may not be a computer programmer and may nothave the knowledge nor the skills required to fix the required code.

Applicant has further realized that the limitations of the widgets ofthe prior art may be overcome using a WCA (website building systemconfigurable application) which may be such widgets as discussed hereinabove as well as other types of applications or other WBS entities suchas vertical solutions, applications and plug-ins. A WCA is a set ofelements packaged together which may be used in a website or a mobileapplication. The elements may include website building systemcomponents, associated code and additional elements as further describedbelow and shown in FIGS. 2A and 2B to which reference is now made. TheWCAs may be customized to manipulate some or all of their elements toprovide a component-based operation. The WCA may be embedded as aninstance into a website page in a similar manner to a widget or a thirdparty application.

Thus, for the scenario of the travel widget as described herein above,if a designer embeds a travel WCA (as opposed to the prior art travelwidget as described herein above) and them removes the map element (forexample), the code which updates the map element when an event isselected will be updated or changed accordingly. As discussed hereinabove, the designer may not have the skills to fix the code by himself.

It will be appreciated that such WCAs may simultaneously function as anembedded application (similar to a third-party application), as websitebuilding system components or as entities whose elements/sub elementsmay be separately manipulated by the website designer. The WCAs may beedited by both the WCA developer and the web site designer (at a leveldetermined by the developer) to allow for updates, variant creation etc.The WCA developer may be part of the WBS vendor 61 development team ormay be an independent entity who sells via an Appstore or through anyother channel or may even be part of the site designer organization. Asdiscussed herein above any modifications made to the WCA may notnecessarily affect its functioning.

It will be appreciated that developers may update WCAs that theythemselves have developed and that site designers 62 or users of the WCAmay also modify the WCA further in order to customize it for themselvescreating more than one version of the WCA. Updates may also occurautomatically as a result of inheritance or change of reference. Anupdate may also be delivered via an internal delivery from within thewebsite building system, an external electronic delivery from outsidethe website building system such as via web services, e-mail, FTP, P2Petc. or an external physical delivery such as media delivery.

It will also be appreciated that typically updates to a WCA may comefrom a WCA developer and modifications from a WCA user such as sitedesigner 62. These changes may also be interchangeable since (forexample) site designer 62 may create a variant version of an existingWCA and he may customize WCAs per each instance on a site. When thisoccurs, site designer 62 may become a developer of the WCA since he nowhas a changed version of the original WCA which he can publish for hisusers.

This customization may be done by using the pre-packaged API directly orthrough auto generated panels, through methods pre-defined by a WCAvendor (such as custom built panels), by adding or removing some of theelements, by changing any of the elements through their regular editormenus and panels and by writing code which works with the WCA as a wholeand utilizes its API. Another customization may include writing codewhich works with the elements of the WCA adding functionality over itsoriginal intention. For example, a button which is used as a “playvideo” button for a WCA is may be modified by site designer 62 by addingcode which counts clicks to the button and updates an incrementalcounter. Customization may also be applied to other elements of the WCA,such as back-end elements or the WCA configuration and setting panelsthemselves. These forms of customization are described in more detailherein below.

It will be also appreciated that the techniques described herein beloware not just applicable to changes that break code. There may also beother change types which may “break” or affect the functioning of theWCA. For example, the WBS may support components that update each otherwithout code such that a change in the value (for example) displayed bya component A is reflected some way in component B which may display(for example) a total of the values displayed in component A. Such alink may be a feature of the WBS which does not involve any code. Thelink may be broken if either component (A or B) is deleted or replacedwith another component or component type.

Such a breakdown may be due to site designer 62 breaking something inthe WCA during his site creation or due to an update from the originaldeveloper of the WCA which is not consistent with the changes made bysite designer 62. For example, site designer 62 using WCA X creates aconnection between components A and B (in WCA X) which did notpreviously exist. A later update the WCA X has B removed which is only aproblem for site designer 62 who created the A-B link and not for othersite designers 62 using the same WCA. It will be appreciated that suchcode or connection/link breaks may be full or partial.

Thus for a WCA acting as the travel widget described herein above, achange that breaks the code connection or an update of an event or themap WCA sub-elements may not affect the functionality of the WCA whichmay be able to ghost, masquerade some of the lost functionality of themodified or updated sub-elements or update any pre-defined installationpolicies for the change as described in more detail herein below. Itwill be appreciated that connections between WCA sub-elements may bedirect or message based as well as code based.

Applicant has further realized that this ability to “fix” breaks i.e.compensate for modifications after they have occurred allowing to WCA toretain full functionality may improve that functionality of theembedding website and of the computer itself running the website. When a“broken” widget does not function properly, the website running it doesnot function properly either and is likely to crash. Furthermore, theability to embed WCAs in WBS websites (which are based on a complex setof inherited elements, including layout, content and code) improvessystem storage use (as WCA definitions are included by reference insteadof being duplicated) and performance (as WCAs can be loaded only whenrequired, and parts of them are loaded to the server only). The abilityto resolve breaks and conflicts greatly facilitates the use of suchinherited/by-reference WCAs in conjunction with site-specificmodifications and customizations.

Reference is now made to FIG. 3 which illustrates a system 200 forhandling website building system (WBS) configurable applications in awebsite building system according to an embodiment of the presentinvention. System 200 may comprise the elements of system 100 asdescribed in U.S. Pat. No. 10,073,923 (as well as any sub elements) inconjunction with WCA module 300. System 200 may allow for the creationand integration of WCAs into the website building system and theirmanipulation as described in more detail herein below.

It will be appreciated that from herein, the discussion on system 200refers to the applications created by designers using a website buildingsystem and accessed by the end-users as web sites, although system 200may be applied to other categories of on-line applications which areaccessed using specific client software (proprietary or not). Suchclient software may run standalone or be activated from a browser (suchas the Adobe Flash plug-in). End-users may access these web sites usingclient software on regular personal computers and also on smart-phones,tablet computers and other desktop, mobile or wearable devices.Alternatively, system 200 may be applicable to systems which generatemobile applications, native applications or other application types asdescribed in U.S. Pat. No. 9,996,566 entitled “Visual Design System forGenerating a Visual Data Structure Associated with a SemanticComposition Based on a Hierarchy of Components” granted 12 Jun. 2018 andassigned to the common assignee of the present invention andincorporated herein by reference.

It will be appreciated that all the elements of system 200 may ingeneral handle website building system objects or components.

WCA module 300 may interface with multiple parts of website buildingsystem 5 as well as directly with users of various types. Reference isnow made to FIG. 4 which illustrates the elements of WCA module 300. WCAmodule 300 may comprise a WCA manager 310, a WCA Appstore manager 315, aWCA site viewer 320, a WCA repository 325, a WCA deployment/usageenvironment (in-site editor) 330, a WCA SGS (site generation system)interface 340, a WCA CMS coordinator 350, a WCA building environment(app builder) 360 and a WCA handler 370. WCA app builder 360 may furthercomprise a customization panel creator 361, a dialog editor 362 and aWCA analyzer 363.

WCA manager 310 may integrate with WBS site manager 10 to providemanagement services for the WCA (at the WBS vendor 61, site designer 62and WCA developer 64 level). WCA Appstore manager 315 may integrate withobject marketplace 15 to provide the ability to offer WCAs for sale andto purchase offered WCAs. WCA site viewer 320 may integrate with the WBSRT server 20 to deploy and execute applications which include WCAs forend users (site visitors/viewers 63) which use sites embedding WCAs.In-site editor 330 may integrate with the regular WBS editor 30 forspecific editing capabilities related to WCAs for WCA users (siteowners/designers 62) which embed WCAs into their sites a WCA SGSinterface 340 may interface with site generation system 40 to providefor the creation of sites containing WCAs. WCA CMS coordinator 350 mayinterface with WBS CMS 50 to provide access to the requiredrepositories. App builder 360 may be used by WCA developers 64 to buildand edit WCAs and WCA handler 370 may coordinate the functionality ofthe elements within WCA module 300 accordingly.

System 200 may store the WCA definitions in the specific WCA repository325 or may store them elsewhere such as in WBS CMS 50 using a referenceto it in the containing page or application. Such a central storage maysimplify further updating and version control of the WCAs. WCA CMScoordinator 350 may also resolve the references and bring the relevantWCA copy from a local application copy, the repositories above or anyother storage. System 200 may also store the WCA definition (includingall of its elements) in WBS components repository 516 and the actual WCAinstances in the WBS site repository 509 (as discussed in U.S. Pat. No.10,073,923). Alternatively, system 200 may store them in WCA repository325.

It will be appreciated that all the elements of a WCA may havefront-end, back-end and additional sub-elements as described in moredetail herein below. Furthermore, the parts of the WBS handling some orall the sub-elements may be implemented as website building systemapplications (which may include WCAs by themselves) on top of thewebsite building system. Alternatively, some may be implemented asextensions or applications running on the website building system.

As discussed herein above, relevant user categories may include WCAusers (site designers) 62, end users (site visitors/viewers) 63 and WCAdevelopers 64 (part of the website building system vendor staff orexternal developers).

It will be appreciated that there may be some overlap between the usercategories, or users of one category could also function in some casesas users of another category (under the same or different set of user IDor credentials). For example, a WCA developer 64 may also develop websites using his own WCAs. The website building system may also allowend-users 63 to make some edits to the site they are visiting, possiblyusing or modifying a WCA instance in the site.

It will also be appreciated that the site designer 62 may also be thesite owner, or may be a separate user given editing permissions for thesite by the site owner (without owning the site), such as an employee ofthe site owner or an external design agency. WCAs may be created by aWCA developer 64 who may be a member of the WBS vendor staff 61 or athird party WCA provider. System 200 may also support creation of WCAsby the designer community, and a marketplace for such WCAs as well ascreation of a WCA based on an existing WCA (as discussed in more detailherein below). For the purpose of discussion, reference to the term usermay refer to anyone belonging to the above mentioned categories that ishandling a WCA.

As discussed herein above with reference to FIGS. 2A and 2B, a WCA is aset of elements packaged together including website building systemcomponents, associated code and additional elements. It will beappreciated that the included components may be atomic as well ascontainer components and that components may also include third partyapplications (both front-end and back-end). A WCA may also includeadditional (lower level) WCAs, as well as regular components andcontainers.

A WCA can also be classified and understood in various different wayssuch as by their size or scope of provided elements/sub elements. Itwill be appreciated that WCAs can range in their object size (or scope)from a single component WCA (e.g. a button or an image field) to a WCAcontaining multiple interacting websites.

For example, a single WCA offering may include multiple related sub-WCAsof various sizes. This may be done by offering a WCA together with someof its elements which may be used separately and also through offeringswhich includes multiple WCAs (e.g. a primary WCA and a number of add-onrelated WCAs). These concepts are discussed in more detail herein below.

WCAs may also be classified by their sub-elements which may includefront-end, back-end and associated code. They may also be classified bytheir level of abstractness, i.e. how detailed the WCA definition is onthe continuum between a pure template/structure (which specifies minimalproperties and is devoid of actual content) and an actual element (suchas a ready-to-run vertical) as discussed in more detail herein below.

As discussed herein above, WCAs may come in different sizes such as asingle component, with possibly some added customizations, as a set ofcomponents forming a layout, e.g. for an alternative layout suggestion(as described in U.S. Pat. No. 9,747,258 entitled “System and Method forthe Creation and Use of Visually-Diverse High-Quality Dynamic Layouts”granted 29 Aug. 2017, assigned to the common assignee of the presentinvention and incorporated herein by reference.) and as a set ofcomponents forming a new composite component (such as the predefinedsmart composites described in US Publication No. 2018/0032626 entitled“System and Method for Implementing Containers Which Extract and ApplySemantic Page Knowledge” published 1 Feb. 2018 assigned to the commonassignee of the present invention and incorporated herein by reference).WCAs may also be a page section, typically a horizontal edge-to-edgepage strip (also known as coast-to-coast section), a page (such as aproduct gallery page, a checkout page, a thank you page, etc.), a pageset/site section, a web site (or a template thereof) and a verticalapplication. A vertical application is a specialized web site adapted toa specific industry (such as e-commerce, hospitality, restaurants or lawoffice) which may include additional sub-systems (such as ordering,shipping or booking). The vertical application thus serves as aplatform, which may be used as-is or customized. A WCA may also be a setof multiple cooperating (or otherwise interacting) websites or verticalapplications (such as a multi-module ERP system). Thus, the size of aWCA may range from a single component or widget to a complete verticalapplication (such as a car selling platform) or set of applications.

It will be appreciated that system 200 may have multiple architecturesfor WCAs of different scopes. For example, system 200 may implement asimple version of WCAs (known as “shared parts”) which only contain asingle component or a simple arrangement of components. This may allowfor a simpler arrangement of the storage of the WCA and its applicationin the containing applications.

A WCA may also include dashboard-based elements. A dashboard is a partof the website building system GUI (as opposed to a site GUI) which isaccessible to the site owner but not to the site viewers/end-users 63.System 200 may allow the site owner to designate access to specificareas or elements of the dashboard to specific additional users logginginto the website building system (e.g. by adding a role of a siteoperator which is distinct from that of the site owner).

Some of the dashboard GUI may be generic, while some may besite-specific. Such a dashboard may contain, for example, a specific GUIto display the order queue (for a restaurant site) or the product stocklevels (for an e-commerce or logistics site) or to upload new content(e.g. new products) into the site.

A WCA may provide dashboard page(s) or parts thereof (such as a widget,a component or a page section). Such a customized GUI may include, forexample, specific dashboard page sections which display the pendingorders for a restaurant using a customized format.

A WCA may also include website building system UI (user interface)support panels (also known as “dialog boxes”) or panel sections. Awebsite building system GUI typically consists of multitudes of panels,including higher level ones (such as “my sites” or “media manager”panels) as well as lower level ones (such as panels shown while editingspecific pages or specific components). The WCA may provide additionalor alternate panels, panel sections (such as the menu sections describedin U.S. Pat. No. 10,459,699 entitled “System and Method for theGeneration of an Adaptive User Interface in a Website Building System”granted 29 Oct. 2019 assigned to the common assignee of the presentinvention and incorporated herein by reference) or panel behaviors (e.g.changes to system panel behavior which do not necessarily have a visualrepresentation in the actual panel).

As an example, a WCA developer 64 may create a ‘recipe book’ WCA. TheWCA may include a sub-element called ‘single recipe summary’ whichdisplays a single recipe summary during site viewing. After installingthis WCA (e.g. from an app store in website building system 5) via WCAapp store manager 315, a site owner may be able to select (during siteediting) which recipe the widget would show via WCA site viewer 320during site viewing of the specific page. The recipes may be stored in adatabase associated with the installed WCA instance.

Thus for the example above, the recipe book WCA may provide an optioncalled ‘select recipe’ which may open a new panel allowing for a recipeselection from the WCA's recipe repository (325/CMS 50) when used in theWBS editor 30 (e.g. as part of its website building system settingdialog/menu). These added options and panels may behave as though theyare part of the regular website building system page/component editingGUI or otherwise may extend the GUI's behavior or interface. This may beknown as a website building system panel WCA.

It will be appreciated that this new panel (as defined by the WCA) mayinclude procedural elements (which may access repository 325/CMS 50) andwhich may be packaged as part of the WCA. Such a panel (and itsassociated elements) may be specific to a WCA, or may be shared betweenmultiple WCAs types (e.g. the widget ‘next recipe suggestion’ might alsoreuse the same generic ‘select recipe’ panel).

It will be appreciated that WCAs (of all sizes) can include anycombination of the sub-elements as described herein above. Theseelements may appear in WCAs of all types, including regular WCAs (whichprovide site or site elements), dashboard WCAs and website buildingsystem panel WCAs.

The WCA itself may also specify which of its sub-elements areencapsulated within the WCA (and therefore can't be accessed or viewedby the WCA user), which sub-elements are accessible by the WCA user, andwhich sub-elements can actually be modified by the WCA user at theinstance level. These concepts are described in more detail hereinbelow.

Reference is now made to FIG. 5 which illustrate how the sub-elements ofa WCA 400 may be divided into four main categories, of front-endelements 410, back-end elements 420, support elements 430 and datacontent elements 440.

Front-end elements 410 may be a (typically hierarchical) set ofcontained components, such as atomic components, container components,third party applications and possibly, other WCAs and associated code,all related to the main activity of the application. For example, a“city visit” WCA may include a local weather WCA, a “things to do” WCAand a browse-able map WCA, with the appropriate links between all 3sub-WCAs.

Back-end elements 420 may have one or more components running in thebackend, such as atomic components, container components, third partyapplications and possibly, other WCAs, all related to backend activityof the application.

Support elements 430 may require interaction with other elements ofwebsite building system 5. For example, dashboard components 432 such asatomic components, container components, third party applications andpossibly, other WCAs to be integrated into the website building systemdashboard (as described herein above). API definition 431 may be the WCAdeveloper defined specific API for the WCA. This could be a local API, aremote API (such as a web service) or both.

Content elements may include links or other references to databases(e.g. repository 325/CMS 50) of additional WCA-level components andattributes/properties, such as a city name in a weather widget or alike/share count in a social media widget together with an underlyingdatabase of content, including any combination of schema, data storage,database level code (such as data event hooks and triggers) and datarelationships. This may also include any underlying databases databundled with the WCA.

It will be appreciated that associated code 415 may include code runningon the front end, the back end or both (as described in U.S. Pat. No.10,209,966 granted 19 Feb. 2019, U.S. Pat. No. 10,326,821 granted 18Jun. 2019 and U.S. Pat. No. 10,397,305 granted 27 Aug. 2019 all entitled“Custom Back-End Functionality in an Online Website BuildingEnvironment” and all assigned to the common assignee of the presentinvention and incorporated herein by reference). Such code may bevisible to the user or encapsulated inside the WCA.

Other sub elements (not shown) may include data bindings (WCA⇔database325/CMS 50) so that the WCA may be used in dynamic pages (as describedin US Patent Publication No. 2019/0026082 entitled “Dynamic Preview ofDatabase-Populated Web Pages” published 24 Jan. 2019 assigned to thecommon assignee of the present invention and incorporated herein byreference) as well as regular pages providing data access and theability to edit support panels 433, panel sections and other elements.These may include a configuration panel/dialog which may provide aspecialized configuration setting dialog for the WCA. Such a dialog maybe automatically generated to reflect the defined properties (asdescribed in U.S. Pat. No. 9,753,911 entitled “System and Method forDialog Customization” granted 5 Sep. 2017 assigned to the commonassignee of the present invention and incorporated herein by reference)or otherwise marked properties, and may also be custom-coded.

Sub elements may also include editing behavior plug-ins (as described inUS Publications No. 2018/0032626 and No. 2018/0293323) which may definealternative editing behaviors for the element (e.g. allow resizing onlybetween a number of predefined sizes) and specific manipulation handles(as described in U.S. Pat. No. 10,169,307 entitled “Method and Systemfor the Use of Adjustment Handles to Facilitate Dynamic Layout Editing”granted 1 Jan. 2019, assigned to the common assignee of the presentinvention and incorporated herein by reference and US Publication No.2018/0032626). These could be specialized handles that controlgeometrical properties of the WCA (such as resizing or rotating). Thesecould also be handles which provide specialized control functions, suchas to affect properties of some parts of the WCA but not others.

Another type of sub element may be frame elements which may be specificmanipulation UI elements which are attached to the WCA's frame (inaddition to geometrical manipulation handles) as described in USPublication No. 20180032626. Reference is now made to FIG. 6, whichillustrates the recipe widget (400) described above and how it may haveset of special frame elements (for edit-time use) which have functionssuch as “next recipe” (a), “previous recipe” (b) and “random recipe”(c).

It will be appreciated that editing viewing support code in the editingenvironment may provide an improved look to the WCA during editing. Forexample, a video player WCA may provide a limited frame rate or reducedquality video preview which can run during editing without burdening theediting platform.

Further sub elements may include rendering support code 434 affectingcomponent run-time rendering, including specific server-sidepre-rendering behavior and SEO support code 435 affecting SEO andindexing support, allowing for specialized handling of components during(spider) indexing and retrieval (as described in U.S. Pat. No. 9,436,765entitled “System And Method For Deep Linking and Search Engine SupportFor Web Sites Integrating Third Party Application and Components”granted 6 Sep. 2016 and US Publication No. 2019/0026280 entitled“Website Builder With Integrated Search Engine Optimization Support”published 24 Jan. 2019 both of which are assigned to the common assigneeof the present invention and incorporated herein by reference). Appstore support 436 may provide App-store related information such asname, description, commercial information and version information.

WCA variations may provide alternatives for some elements of the WCA,while some of the elements remain constant. For example, a single WCAmay provide multiple variations for its design (e.g., one that is leftjustified and one which is right justified), while using the same codefor these multiple designs. Alternatively, a single design may havemultiple variations with different versions of the code attached to theWCA elements. Different variations can also each have some differentdesign elements and some different code elements.

Such functionality may allow (for example) designers 62 to create adifferent look and feel without involving code writers. This capabilityis different from the use of skins as the layouts may be radicallydifferent, have different UI and customizations, and possibly differentfunctionality.

WCA handler 370 may select which variant to use based on the availableinformation such as the website elements of the site that includes theWCA, the system configuration (e.g., which third party applications andverticals were purchased) together with user collected information suchas geographical location, language, editing history, collected businessintelligence (BI) etc. WCA handler 370 may also provide multiplevariants to the user (possibly filtering them according to the availableinformation noted above), and allow the user to select which one to useas described in more detail herein below.

In addition to variants, the WCA may include optional parts (typicallyhidden from display in the some WCA configurations), which are activatedbased on the available information (automatically) or on user selectionas noted above.

It will be appreciated that system 200 may maintain a dual outlook for aWCA as both as a single packaged entity and as a set of customizableelements (which may be visible and/or editable by users for sites usingthe WCA). Different WCAs may allow different levels of access to their“internals” as discussed in more detail herein below. The pertinentwebsite building system may interact and handle both the WCA as a singleelement and as constituent elements as represented by the dashed lines500 in FIG. 5 back to which reference is now made.

As discussed herein above, a WCA may be built having different levels ofabstractness. On one hand, a WCA may be abstract, providing (forexample) just a set of abstract components (also known as a layout)which can be used to format pages. The user (e.g. site designer 62)would have to fill them with content, edit their attribute and possiblymodify their type (e.g. changing one gallery type to another). At theother end of the continuum, a WCA may be a fully functional site, sitesection or vertical application. Such a WCA would include all requiredfront-end and back-end elements, the underlying code, relevant initialcontent etc. as discussed herein above.

It will be appreciated that WCAs may be created with any level ofabstractness on the continuum between these two examples (e.g.,specifying some of the component's elements and attribute, while leavingother elements and attributes unspecified or as a default).

It will be appreciated that WCAs may be constructed inside a given site(for use in the specific site), or may be packaged so as to be used inmultiple sites. This could be used for different sites of the same useror owner, or for use in other sites. In the latter case, the WCA may beoffered via an application store (run by website building system vendor61 or a third party). Such a packaged WCA is often referenced as aplug-in WCA.

It will be appreciated that once a WCA or a plug-in WCA is madeavailable for the website building system tool palette UI (as describedin U.S. Pat. No. 10,459,699). WCA in-site editor 330 may be used by theuser to edit all elements of the WCA, including in particular itscomponents, layout and front end/back end code, as permitted by the WCAprovider (which may lock some parts or elements of the WCA against someor all types of editing as further discussed below).

System 200 may handle the packaged WCA (or plug-in WCA) as essentially ahigher-level component (or other website building system element) whichstill consists of sub-elements, and possibly additional elements. Eachof those sub-elements may retain full editing capabilities such that itretains both full functionality as an atomic-level element, but alsowithin the WCA and its semantic role within the WCA.

Reference is now made to FIG. 7A which illustrates the elements of WCAhandler 370. WCA handler 370 may further comprise an alert provider 372,a WCA modification handler 373, a feedback provider 374, a ghost module375, a masquerader 376, a database connector 377, an API handler 378 anda machine learning (ML)/artificial intelligence (AI) module 379. Thefunctionality of these elements is discussed in more detail hereinbelow.

Reference is now made to FIG. 7B which illustrates the elements of ML/AImodule 379. ML/AI module 379 may further comprise a decision engine3791, a CMS extractor and trainer 3792, an element behaviortracker/trainer 3793, an element behavior ML/AI module 3794 and amerging ML/AI module 3795.

ML/AI module 379 may provide decisions for ghosting module 375,masquerader 376 and the merging functionality of WCA modificationhandler 373 as discussed in more detail herein below. ML/AI module 379may train the machine learning models implemented by element behaviorML/AI module 3794 and by merging ML/AI module 3795. ML/AI module 379 maytrain both modules (3794, 3795) based on the data extracted by CMSextractor/trainer 3792 from CMS 50 and WCA repository 325 (includingsite and user parameters, as well as user collected information such asediting history and business intelligence information). ML/AI module 379may further train both modules (3794, 3795) based on tracking thebehavior of WCAs and their elements (including code execution paths,user interactions, inputs/outputs, data exchanged, API calls, internalservices invoked, etc.). Decision engine 3791 may make decisions basedon element behavior ML/AI module 3794 to support ghost module 375 andmasquerader 376 in performing their function. Decision engine 3791 mayfurther make decisions based on merging ML/AI module 3795 to support WCAmodification handler 373 (and its merging functionality in particular)in performing their function.

ML/AI module 379 may implement any machine learning/artificialintelligence algorithms, including in particular Long Short Term Memory(LSTM) neural networks (to handle sequences such as editing history andBI data) and convolutional neural networks (to handle geometricallydefined data, such as component layouts).

Reference is made to FIG. 8 which illustrates the elements of WCAmodification handler 373. WCA modification handler 373 may handlemodifications to WCA such as variant creation and customization. WCAmodification handler 373 may further comprise a variant creator 3731, anAPI analyzer 3732, a permission determiner 3734, a change resolver 3735,a WCA merger 3736, an update receiver 3737 and a change applier 3738.The functionality of these elements is discussed in more detail hereinbelow.

It will be appreciated that WCAs may be created using WCA app builder360 and further edited using customization panel creator 361 and dialogeditor 362. Dialog editor 362 may be typically focused on editing theWCAs definition themselves, whereas customization panel creator 361 istypically focused on editing the various WCA-specific customizationpanels which are associated with the WCA, and which may be displayedduring editing (or in some cases during run-time when some editingcapability is available during run-time) to help in configuring thespecific WCA instance. Such customization panels may be displayed inconjunction with the WCA (e.g. on its boundary), or may be embedded intothe WBS main editing UI. In alternative embodiments, they may also beedited using WCA in-site editor 330 and the regular WBS editor 30 whichmay be extended by additional capabilities to support WCA editing.

WCA in-site editor 330 and WCA app builder 360 may function separatelyor may be integrated together and each may consist of a singleintegrated editor or multiple visual editors (e.g. one for each of thecontained components, the property panel and the frameelements/handles/editing behavior add-ons etc.).

It will be appreciated that such creation and editing may be performedby the original WCA developer 64. The WCA developer 64 may furtherspecify if the WCA can be edited by site designers 62 who use the WCA(i.e. at the instance level), and if so which sub elements of the WCAmay be visible and which may be edited.

System 200 may also allow some level of end-user 63 editing capability,such as allowing end-users to edit component-based blog posts which areposted to a blog system (including having multiple end-user levels asfar as editing is concerned). In this scenario, the WCA developer 64(which developed the blog WCA used in this exemplary blog system) mayalso specify what areas and elements are editable by end-users 63, andin which way. System 200 may allow such specification to be made by theWCA developer 64 or by the site designer 62 who designed the site usedby end-users 63 and according to User Change Acceptance rules describedin more detail herein below.

Thus, the WCA developer 64 may determine, for example, that the WCAcomponents may be edited, but not deleted and that new ones may beinserted. He may also determine that the WCA code is neither visible noreditable to designers 62 using the WCA. Such determination may alsoapply to additional elements of the WCA, such as itscustomization/settings panels.

System 200 may provide different levels of granularity for suchconfigurations (i.e. what is visible and what may be edited), includingWCAs of different sizes as described herein above. At the simplestlevel, system 200 may allow WCA developer 64 to specify that the WCA maynot be edited (i.e. the WCA is locked in “factory settings”). In analternative embodiment, it may allow WCA developer 64 to specify highlydetailed rules (similar to the User Change Acceptance (UCA) rulesdescribed below) regarding which components and attributes may be editedand in what ways. Such rules may specify editing limitations such assub-component positioning change limits, attribute change limitations(e.g. which fonts can be selected), whether inserts/deletes are allowedetc. As discussed herein above, system 200 may allow the WCA developer64/designer 62 to delegate part or all of these capabilities to the WCAuser which may in turn specify such rules applying to end-user editing(if available). It will be appreciated that limiting the scope ofediting for a given WCA may make the merging of edits from multiplesources (as described in more detail herein below) much easier.

Update receiver 3737 may receive updates from all levels of user and maycoordinate them accordingly with the other elements of WCA modificationhandler 373.

Permission determiner 3734 may prevent updates and modifications (orparts of thereof) from occurring at all. It will be appreciated thatpermission determiner 3734 may therefore prevent future WCA breakdownsas well as any incompatibilities in design etc. A typical embodiment mayinitially place the WCA in “locked mode”. In this locked mode,permission determiner 3734 may handle permissions for users that areediting and may lock the WCA's sub-element's position and size, andprevent the user from deleting any sub-element. However, the user may beable to change (for example) the style, font, and content of the varioussub-elements. This way, updates may be easy to integrate (as discussedin more detail herein below).

In such an embodiment, the user may specify that the WCA should beunlocked, and that the WCA may not be changed or may only be partiallychanged (such as allowing code updates that do not affect the layout ofthe WCA). Alert provider 372 may warn the user before any such unlockingis done.

It will be further appreciated that there may be multiple types ofcustomization available for a WCA. At one level the WCA may be modifiedby editing its elements (creating a variant WCA). At a different level,a WCA instance may be modified “in place” (i.e. inside the page/site inwhich it resides), without creating an alternate WCA. Such instancecustomization may also take into account (and integrate with) otherelements in the WCA's environment, such as the containing page/site. Thecustomization may differ from instance to instance, and may also bedynamic in nature (e.g. change as the site is used or otherwise based onexternal inputs and triggers). WCA modification handler 373 may handleboth automatic and manual customizations.

A WCA instance may be customized, for example, using any of thefollowing methods or a combination thereof. It may be customized using apre-packaged API provided with the WCA. This may be made, for example,through user-written code via WCA in-site editor 330. The pre-packagedAPI may be similar to those provided by regular components in thewebsite building system (as described in U.S. Pat. Nos. 10,209,966,10,326,821 and 10,397,305). For example the code “$w(‘#VisitCityWCA’).city=‘London’” may be edited to change the city name.

Variant creator 3731 may allow an edited WCA to be saved and used as aWCA variant by itself (also known as a “fork”). System 200 may limit theability of the edited WCA to be further re-distributed, e.g. uploaded toan app store for further use. Reference is now made to FIG. 9 whichshows the WCA of FIG. 5 (now 400B) where the back end associated code415 has been removed and new code 416 has been added.

Alternatively, variant creator 3731 may also allow such re-distribution,e.g. WCA developer A creates a WCA X and publishes it as a plug-in, WCAdeveloper B creates a modified version X* of the plug-in andre-publishes it and WCA developer C uses X* in his site, possiblyfurther modifying it into X**. The distribution may be done though appstore(s) (via WCA Appstore manager 315), and system 200 may implement arevenue-sharing model between the original WCA developer (A above) andmodified version redistributors (B above).

It will be appreciated that the arrangement described above (variationcreation) in which a WCA is created based on another WCA may be regardedas an inheritance arrangement. System 200 may also support multipleinheritance, i.e. creating a WCA which combines elements from multipleWCAs.

A WCA instance may be customized using a UI panel automaticallygenerated from the WCA's pre-packaged API. In this scenario, APIanalyzer 3732 may analyze the WCA's pre-packaged API to detect the API'sproperties and interfaces and generate a matching settings panel. APIanalyzer 3732 may further populate the settings panel with defaultvalues based on properties in the WCA's API.

Thus, for the API example above, API analyzer 3732 may produce asettings panel allowing the user to enter a city value for the WCA‘VisitCityWCA’. It will be appreciated that this method may be moreuseful with static attributes, as dynamic attributes (which changeduring WCA runtime) may typically require use of the API to dynamicallyspecify their value.

WCA analyzer 363 may recognize repeating or hierarchical elements in theWCA structure, and accordingly, generate lists and nested elements inthe generated customization panels. Such an analysis may also producesource code elements (such as setters and getters) for use whenincluding the WCA in a larger application. These may be used by WBSeditor 30 when creating code in the containing application. It will beappreciated that WBS editor 30 may generate a template for the requiredcode. When a WCA is used, WCA analyzer 363 may also generate templatecode for the code editor to help in handling the WCA API.

Customization may also be performed using methods pre-defined by WCAdeveloper 64 such as custom-built panels. Customization may also beperformed manually via WCA in-site editor or WBS editor 30 by the userby adding or removing WCA sub-components, by changing the WCAsub-components through their regular editor menus and panels and bywriting code which works with the WCA's sub-components i.e. code addedas a layer above the WCA's own handling of those sub-components. Itshould be clarified that these WCA sub-components may typically beregular WBS components (which already have their existing defaultcustomization menus and panels). For example, a video player WCA may usea button as a ‘play video’ button, but the WCA instance customizationmay add code which listens to clicks on that button (or to WCA events ingeneral) and executes some additional code, such as code incrementing acounter on the page (e.g. a video views counter). Such customization maybe available even if the WCA's internal code is hidden (encapsulated) asdiscussed herein above. In these scenarios, WCA modification handler 373may receive these edits and implement them accordingly.

WCA analyzer 363 may also perform static source analysis on WCAs. Suchanalysis can be used by customization panel creator 361 to generatecustomization panels (similar to panel generation based on API analysisas described herein above). Such analysis can also be used to determinethe permission required for the WCA to run, and request the WCA user toconfirm the grant of the required permissions for use by permissiondeterminer 3734.

As discussed herein above, customization panel creator 361 may thusautomatically create customization panels which contain the relevantelements for WCA customization including WCA-specific properties whichmay not exist in any of the components comprising the WCA (as describedin U.S. Pat. No. 9,753,911).

As discussed herein above customization panel creator 361 and dialogeditor 362 may further provide an editing environment for theoperational UI (e.g. buttons, toolbars and menus) of the websitebuilding system used in conjunction with the WCA. WCA site viewer 320may support WCA viewing during runtime.

It should be noted that such UI editing may be at a separate level fromthe creation of customization panels for the WCA. The regularcustomization panels may be used by users who just customize the WCA(i.e. modify pre-designated attributes of the WCA). Customization panelcreator 361 and dialog editor 362 may allow for modifying the UI of theWBS editor 30 for users who want to actually edit the WCA (e.g.add/remove/modify components of the WCA), including people creating aderivative (inherited) WCA variant. An example implementation of a UI isdescribed herein below.

In particular, system 200 may provide a building environment whichallows a WCA developer 64 to edit the UI and any interactions at the WCAlevel and at the sub-element level. Thus (for example), WCA developer 64may create a video player WCA which uses a plain button as a playbutton. WCA developer 64 may create new editing experiences for the WCAuser both at the video-player level and at the play-button level (so itbecomes a slightly different entity than a plain button).

It will be appreciated that multiple such changes to the editingenvironment (resulting for example from the use of multiple WCAs, eachhaving its own set of editor UI changes) may conflict with each other.Change resolver 3735 may resolve such conflicting changes when thechanges are introduced in real-time or during editing. Change resolver3735 may take into account (for example) the user's profile, editinghistory, user editing behavior, current editing focus, site/page/WCArelated parameters, collected site BI, etc. in order to resolve theconflict. Such resolution may be fully automatic, semi-automatic ormanual (involving WCA developer 64).

WCA developer 64 may update the original WCA and distribute the changedversion, even if site designers 62 using the WCA have madeinstance-level changes to the WCA. Such updating may be done by merging(for each instance of the WCA in use) the two sets of changes (WCAdeveloper 64 changes and site designer 62 changes) as further describedbelow.

It will be appreciated that system 200 may implement a physical updatedistribution architecture, in which changed versions of the WCA areactually delivered to WCA client site instances. Such distributedupdates may contain the full changed WCA or be differential in nature.

System 200 may also implement a by-reference/inheritance-basedarchitecture in which a site using a given WCA only, includes areference to a centrally stored version of the WCA. System 200 may stillstore multiple copies of the master version in some cases, e.g., tosupport localized caching. The technologies and capabilities discussedbelow are all applicable to embodiments which use physical (full orpartial) update distribution, as well as embodiments which use theby-reference/inheritance-based method of updating WCAs. In the lattercase, the various system elements in discussion may operate at any phaseof the functionality of system 200, including page creation, saving,publishing or during run-time (e.g., when pages are dynamicallyconstructed for rendering and the WCA updates from multiple sources arehandled and merged in real-time).

WCA CMS coordinator 350 may store in database 325 (or in CMS 50) thelocal changes made by the site designer 62 for the specific WCA instancein the specific site. These local changes may also include otherparameters and settings, such as selection of WCA variant to use or thespecification of a base parameter such as a city selection for a “Localnews” WCA.

It will be appreciated that WCA SGS interface 340 may be dynamicallyintegrate a WCA into a page whenever the page is loaded, e.g., when thepage is edited or viewed (including the changed master version and anylocal changes and parameters). Thus, the page will always reflect thelatest update of the referenced “master version” of the WCA. Thisdynamic integration may apply any of the rules or policies describedbelow to this dynamic integration process (such as “limit updates frommaster copy to code changes only but not layout”).

WCA handler 370 may also implement silent updates, which WCA handler 370may distribute to client sites (which use the WCA) without notice.Alternatively, WCA handler 370 may distribute updates together withadditional information that will be presented to the user on receipt ofthe updates. Such additional information may include interactiveelements (displayed before, during, or after installation), such as auser confirmation form, feedback requests, training, and documentationfor the update to be presented. The additional information may alsoinclude code or condition definitions for the installation of theupdate. This also applies to the by-reference architecture (whichdoesn't have an explicit update distribution operation) as the pageintegration process may detect that the master copy of the WCA has beenchanged during editing, and present the additional information notedabove to the site designer. The same process may also be employed in thelive site (i.e., during run-time) to present the changed version to theend users, possibly including additional information (e.g. “Press hereto learn about the new ‘city tour’ display” button).

WCA handler 370 may support update installation during run time for someor all of the updates for a WCA. In such a scenario, the update may beapplied to instances currently executing on the server or the clientside of the web site containing the WCA. It will be appreciated that theclient-side installation may require updating end-users accessing theweb site. Such a run-time update may not always be possible, as runningcode cannot be “switched while running” in many cases, and system 200may determine if this is possible based on the current WBS runningcontext.

WCA modification handler 373 may also allow a WCA user (such as a sitedesigner) to specify the update installation policy for a given WCAinstance in the site the user is creating or editing. For example,update receiver 3737 may allow the WCA user to specify that updateswould be automatically installed (also known as “formal layout” or“classical layout”) or not installed (known as “customized layout”). Inthe latter case, the user is said to be “disconnected” from the updatesstream.

Permission determiner 3734 may implement a policy under which someelements of the WCA are changed, and some are not. For example, WCAmodification handler 373 may elect always to update the WCA codeelements but not update the WCA layout (component choice, placement,sizes) unless explicitly approved. The update may also be conditional onwhether the element has been modified by the WCA user such as “onlymodify the layout if the user hasn't modified it before” (looking at theentire WCA layout or sub-elements of the layout at a given granularity).Under such a policy, the two parts may get out of sync at some point, asthe code may break down once the layout has been modified too much. Itwill be appreciated that such merging may also work if the site designermodifies a WCA in order to create a local variant, or even if suchvariant was published and used by additional parties.

Change applier 3738 may apply any modifications according to the outputof the other sub elements of WCA modification handler 373.

It will be appreciated that the description below of WCA merger 3736 andits elements below may also be applicable to an inheritance mode inwhich changes are merged online. Thus, WCA modification handler 373 mayhandle an initial version of a WCA (W1), a follow-up version of a WCA(W2) and a modified version of W1 as customized by the site designer (W1a) as illustrated in FIG. 10 to which reference is now made.

WCA merger 3736 may implement such merging by handling the changes madeto the WCA as attribute overrides/modifiers (which modify existingattribute values). Reference is now made to FIG. 11 which illustratesthe elements of WCA merger 3736. WCA merger 3736 may further comprise adifference analyzer 37361 and a conflict resolver 37362. Thefunctionality of these elements is discussed in more detail hereinbelow.

Difference analyzer 37037 may arrange the attributes of each object inthe WCA as an attribute tree. Reference is now made to FIG. 12 whichshows an attribute tree with a geometrical attribute node (a) withsub-nodes (b) being “position” and “size” and sub-sub nodes (b) being x,y, height and width (the position attribute may be the component'sposition relative to its container). An attribute tree may also have a“code attributes” node, with sub-nodes being “backend code” and“frontend code”, and with sub-sub-nodes being the code snippetsassociated with specific triggers. Yet another node may be a “matrixgallery settings” node, with sub-nodes for the numbers of rows andcolumns, the specific margins used etc.

Different implementations or embodiments may have different levels ofgranularity for their attribute trees. For example, for a colorattribute, one implementation may have separate attribute nodes for eachof the R, G and B color components whereas another embodiment may use asingle “color value” attribute nodes (which combine the R, G and Belements).

Thus, any changes made to W1 (such as when creating W1 a as shown inFIG. 10 back to which reference is now made) may be stored as a set ofmodifiers to attributes (e.g. set color attribute to red). WCA in-siteeditor 330, dialog editor 362 and customization panel creator 361 mayalso provide an editing option of “reset to inherited value”(re-inherit) for specific attributes (at various node levels) in orderto restore the specific attribute node to inheriting the original value(i.e. by canceling the attribute node modifier).

It will be appreciated that WCA developer 64 may edit the WCA component(i.e. the W1 to W2 editing of FIG. 10) using WBS editor 30 as a regularwebsite building system component modification, and may store some orall of the changes made by the WCA developer 64 as a set of attributemodifiers as well in CMS 50.

Thus, WCA merger 3736 may re-apply or merge the W1 a modifications(originally made to W1) into W2 to create a merged version W2 a asdiscussed in more detail herein below. The process may continue with afurther version, e.g. the user may modify W2 a to create W2 b, and WCAmerger 3736 may apply such changes to W3 to create W3 b (as shown inFIG. 10, back to which reference is now made).

It will be appreciated that when creating a merged changed version (e.g.W2 a in the example above), difference analyzer 37361 may analyze andgather change set #1 (W2 vs. W1−the WCA developer 64 changes), analyzeand gather change set #2 (W1 a vs. W1−the WCA user changes) and thenmerge the two sets of changes (vendor and user) to create W2 a.

It will be appreciated that difference analyzer 37361 may perform thedifference analysis and change set gathering described herein using anumber of techniques which benefit from the component-based architectureof the underlying system. Such techniques (as described in U.S. Pat. No.9,817,804 entitled “System For Comparison and Merging of Versions inEdited Websites and Interactive Applications” granted 14 Nov. 2017 andU.S. Pat. No. 10,176,154 entitled “System and Method For AutomatedConversion of Interactive Sites and Applications to Support Mobile andOther Display Environments” granted 8 Jan. 2019 both of which areassigned to the common assignee of the present invention andincorporated herein by reference applications) may include, for example,any of the following: the underlying website building system componentIDs; locating geometrical and semantic relationships between thecomponents; analysis of the component attributes and content; analysisof the component editing history and smart ordering of the components ateach hierarchy level (so that linear comparison and merging algorithmsknown in the art may be used).

Difference analyzer 37361 may further analyze any changes made to thecode associated with the WCA (be it back-end or front-end code). Such ananalysis may use regular code text analysis as well as object-basedanalysis which may benefit from the association may between codesegments and sub-objects of the WCA.

Difference analyzer 37361 may also handle the use of external editingtools by the user and detect changes which it cannot explicitly track.For example, elements of the code may be edited using an external codedevelopment tool which completes the internally provided code editingtools. As another example, WCA modification handler 373 may allow exportto and import from a standard format (such as XML) of some WCA elements,and such external standard file may be editable using external tools.

In such cases, difference analyzer 37361 may find it difficult to followthe “editing history chain” which details the changes made to the WCA.In particular, such a “chain” may have gaps due to elements being editedusing an external tool and re-imported into system 200.

Difference analyzer 37361 may analyze such gaps, and create an expandedediting history chain which provides a more complete outlook of theediting steps made by the person editing the WCA (be it vendor or user).Such gap analysis may be fully automatic or assisted by the editingperson. Difference analyzer 37361 may also implement such a gap analysisby performing a component-based comparison between the pre-gap versionand the post-gap version in order to establish the changes made by theuser in the external tool.

An example technology to perform such component-based comparison isdescribed in U.S. Pat. No. 9,817,804, e.g. as performed by the comparerand merger 650 (and by the version comparer 655 and version resolver 656in particular) as described therein.

Difference analyzer 37361 may also make use of website building systemcomponent ID's. It will be appreciated that such comparison and analysisoften uses website building system component ID's (as described for IDbased matcher 721 in U.S. Pat. No. 9,817,804). However, with externalediting such website building system ID's are often lost.

System 200 may add such ID information to the exported/importedcomponent metadata which may be preserved by the external editing.Difference analyzer 37361 may also re-establish such ID's after importbased on any ID's preserved in the metadata, or based on the results ofthe comparison process itself (e.g. re-insert the ID from the pre-gapcomponent to its located post-gap counterpart).

It will also be appreciated that a person editing the WCA may sometimeperform editing steps which are difficult to automatically analyze orfollow. For example, a user may replace a video player “play” and “stop”buttons ([A] and [B] respectively) with a toggle switch [C] (with“playing” and “stopped” states). Such a replacement may involve deletingthe two existing WCA buttons, creating a new WCA toggle switch andspecifying new associated code (and functionality) for [C] which aresimilar (but different) from the code used in [A] and [B].

Difference analyzer 37361 may be able in some cases to understand such achange on its own (e.g. based on the various types of analysis describedherein above). For example, difference analyzer 37361 may be able tounderstand the change based on the sequence of operations in the editinghistory (e.g. a two component deletion followed by a componentcreation). As another example, difference analyzer 37361 may be able tounderstand the change based on the new toggle [C] occupying the samegeometrical area in the WCA previously occupied by [A] and [B].

However, in many cases difference analyzer 37361 may not be able torecognize the change for what it is. To resolve this, system 200 mayalso provide a capability for the editing person (vendor or user) tospecify merging hints in conjunctions with the editing process. Thus, inthe example above, the editing person would specify that [A] and [B]have been merged to form [C].

As an alternative to merging hints, system 200 may support activesemantic tags which tie specific components or other triggers (such as“active area” in an image) to a given event activating (for example)some WCA code. An example would be having the editing user manuallyassign multiple objects (say “Play” button [X] and UI image [Y]) withactive semantic tags associated with the video playback function.

It will be appreciated that such hints and tags (and the resultingunderstanding) may be used by change applier 3738 (as further describedin more detail herein below). For example, based on this knowledge,change applier 3738 may (in the scenario described above) apply a newcolor used for [A] and [B] to [C] as well.

As discussed herein above, when creating a merged version W2 a of theWCA, WCA merger 3736 may be required to merge two sets of the changes,the vendor set (W1=>W2) and the user set (W1=>W1 a). These two changesets may (and often will) include conflicting changes. For example, agiven attribute [a] of object [X] is set to the value [a=v1] in onechange set and to the value [a=v2] in the second change set. Asdiscussed herein above, object/component attributes may includedesign-related, code-related and other classes of attributes. Forexample, the two change sets may involve assigning two differentdatabase tables to be used for a “source data” attribute of a given listdisplay field [X].

The conflict may also be related to the actual existence of thecomponent or its sub-elements. For example, one change set may set someattributes [a, b] of a given object [X], while a second change set mayspecify that [X] has been deleted altogether. Such two sets are clearlyin conflict.

Conflicts may also arise involving multiple components with clashing orincompatible attributes or behaviors. For example, in one change set agiven component [X] was moved to a given (and now empty) screen area [r]inside the WCA. In the second change set, a different component [Y] wasmoved to the same area [r]. Theoretically the two components [X] and [Y]could be displayed in [r], but one of them would overlap the other. Asanother example, the two change sets may change the colors of an objectand its containing object to identical or very similar colors, causingthe two objects to “blend” visually.

Another conflict area is dynamic behavior or functionality. An examplewould involve each change set including its own time-based trigger whichplays a (separate) music file in the background. This may work in somecases if there are clear (and mutually exclusive) conditions for themusic to start in each of the time triggers. However, playing two musicfiles at the same time may not work for a typical user.

WCA merger 3736 may use a smart merging process which is adapted to anduses information available in the WBS and its various repositories,including current information (such as component hierarchy, structure,semantics, geometry, associated code definitions etc.) as well ascollected information (such as editing history and business intelligence(BI)).

It will be appreciated that in a typical embodiment system 200, thehandling of the two change sets by WCA merger 3736 is not symmetricsince the changes made by WCA developer 64 may take precedence over thechanges made by the user (for example site designer 62). This istypically recommended since the WCA developer 64 changes may be verysubstantial (e.g. releasing a completely new version of the WCA) whereasuser changes tend to be smaller in scope or more superficial.

As discussed herein above, difference analyzer 37361 may analyze theuser change set (W1=>W1 a). Change applier 3738 may then re-apply thesechanges to the new version of the WCA (W2 in the example above) andconflict resolver 37362 may resolve conflicts whenever conflictingchanges are detected. It will be appreciated that suchmerging/re-applying and handling of conflicts may be done in a number ofways (or a combination thereof) as detailed herein below.

Conflict resolver 37362 may simply discard changes from the user changeset whenever they conflict with changes from the WCA developer 64 changeset. Thus, the vendor change set would completely override the userchange set.

Conflict resolver 37362 may interactively consult with the user todetermine how to resolve each conflict. Conflict resolver 37362 may alsoadd elements of assistance and automation to the manual interaction.This may be implemented, for example, by tracking the responses for thecurrent user (or other users) and gradually providing recommendation forconflict handling based on the collected responses and their analysis.

As discussed herein above, ML/AI module 379 may provide decision makingsupport for conflict resolution during the merging process based oninformation extracted from CMS 50.

It will be appreciated that AI/ML merging module 3795, may provide suchrecommendations for such conflict resolution. Thus, as system 200 isused more and more, AI/ML merging module 3795 may provide betterrecommendations to the user regarding merging of changes. It will alsobe appreciated that the analysis and use of additional user responsesmay be done based on the classification of other users' answersaccording to parameters related to the resolved conflict (e.g. what arethe vendor and user changes involved) or the users themselves (e.g.geography, experience etc. as described for example in U.S. Pat. No.10,073,923). ML/AI module 379 may also provide interface with WCAmodification handler 373 in order to directly apply mergingrecommendations without the user's involvement. It will be appreciatedthat AI/ML merging module 3795 may operate using known machinelearning/artificial intelligence algorithms or use any decision enginetechnology.

In yet another option, the vendor's new version W2 may include a set ofUser Change Acceptance (UCA) rules. These rules (which may be stored inCMS 50) may control which of the changes included in the user's changeset should be applied to W2 and in which way. The rules may beapplicable to all user changes, or only to conflicting user changes. Therules may include conditions on any system aspect, such as the relevantobject and attribute(s), the attribute values (original or in eitherchange set), the nature of the user or vendor change to apply, thenature of the conflict (if any), parameters of the editing historyunderlying both changes and existing version information, page/WCAinformation etc.

One extreme example would be a W2 version which is a major upgrade orre-design of W1. In such a case, W2 may be released with a “discard alluser changes” UCA rule, as none of the changes made by users to W1 areexpected to be relevant (or technically applicable) to the heavilymodified W2. In this scenario, all instances of W1 a (for all users)would be reset to the unmodified W2, i.e. returning all W2 instances tothe “factory settings” state (though the W2 update may define someexceptions for some users for which the W2 instances will not be reset).

In another example of UCA rules, system 200 may allow limited types ofuser changes to override conflicting vendor changes, but would otherwiseuse the vendor changes. For example, system 200 may allow somedesign-related user changes (e.g. colors or fonts) to override vendorchanges, and prevent other user changes from overriding conflictingvendor changes.

In yet another example, the UCA rules may include conditions based onthe specifics or parameters of the changes. For example, a UCA rule maydirect change applier 3738 to apply user changes to WCA sub-elementssize and position, but only if these changes are limited so not to breakthe basic visual structure of the WCA.

As another example, system 200 may allow user changes related to WCAintegration (such as which database are used, interfaces to othercomponents etc.) to override matching vendor changes. This way the newW2 a version may be incorporated into the containing page alreadyconnected with the right data sources and interfaces.

As discussed herein above, a WCA may be described as a set ofsub-elements (front end code, back end code, UI component etc.), each ofwhich consists of a hierarchy of objects/components (e.g. websitebuilding system components), each having a hierarchy of attributes. Thesets of differences between WCA versions may also be similarlystructured, and the structure may in turn define a natural hierarchicalmodel for the change sets.

However, change applier 3738 may also classify the changes into largerareas or groups based on a simplified model. An example would beclassifying WCA changes into generic areas (such as layout, data, frontend code, back end code and others) or into WCA-specific areas (such asspecific sub-regions of the WCA).

System 200 may allow the user to determine which changes to apply andhow on an area by area basis (e.g. for all changes in a given areatogether), using the complete hierarchical structure model above orusing the simplified areas.

For example, modification handler 373 may update the WCA visual layout(i.e. the set of visual sub-elements and the layout information)separately from the WCA code, so that a WCA user (site designer) canupdate his WCA instance to a new version of one of them (layout/code)but not the other.

System 200 may also implement UCA rules (as described herein above)based on areas. For example, WCA developer 64 may define a set of UCArules which automatically apply user changes of data/content whileretaining design and position vendor changes (i.e. design and positionused in the new “official” W2 version).

Regarding the updating of layout/design/structure vs. code, system 200may provide multiple options. For example, system 200 may allow the userto choose whether to retain the previous look and feel, merge with thenew look, or snap to the official look and feel. UCA rules may specifythat some of these options may not be available (e.g. the version breaksthe code compatibility, or are otherwise too significant to skip, so theuser is required to move over to the new design).

Change applier 3738 may also use dynamic layout (as described in U.S.Pat. No. 10,185,703) to support merging of modified WCA elements (e.g.by rearranging the layout in order to support insert, deleted andmodified sub-components).

Thus, once difference analyzer 37361 has determined the two change sets,change applier 3738 may apply any combination of the methods above (suchas the use of UCA rules) to determine which of the changes in either setto apply, in what order (as the changes may not be transitive), conflictresolver 37362 may handle conflicts and change applier 3738 may generatethe merged WCA instance (W2 a in the example above) to be placed in thepage, replacing W1 a.

It will be appreciated that a single web site or application (and infact a single page) may contain multiple instances of one or more WCAs,and that the update/merging process may result in a differentconfiguration of the merged WCA (the W2 a above) replacing each WCAinstance.

It will be appreciated that an embodiment of system 200 may providefeedback to the WCA developer 64 on actual changes done to the WCA byits users, so he can see what needs to be done when changing to improvebackward compatibility. This may include allowing the WCA developer 64to test potential WCA updates against the actual changes made by sitedesigners 62, in order to see how much functionality might be broken bythe update and provide compatibility guidance.

Feedback provider 374 may gather information and provide analysis onsuch WCA instance changes according to user parameters (e.g. geography,experience level), site parameters (size, WCA popularity, specific WCAparams given, premium package type, . . . ), site use info (# of users,site ranking/popularity, business type/family, site business volume,actual viewer access to the WCA, . . . ) and more. This information maybe retrieved from CMS 50 accordingly via WCA CMS coordinator 350.

It will be appreciated that the analysis of the detected conflicts orcollisions may be multi-faceted, and may include for example any of thefollowing (some of which may be types of merge conflicts as discussedherein above): design/visual collisions, e.g. a WCA user has modifiedthe WCA in an instance by adding a new component (occupying a certainunused area of the widget WCA), and WCA developer 64 would also like toadd a component in the same or overlapping unused area. The analysis mayalso be functionality related and API related, e.g. checking forconflicts that are not visual in nature (element X overlaps elements Y),but result from updates that break the existing API, or otherwise breakspecific functions performed by the WCA. For example, an advanced usermay change the API between two sub-elements of the WCA, and an update tothe WCA can contain a different (and conflicting) change to the sameAPI.

Feedback provider 374 may also employ clustering analysis using astandard clustering algorithm in order to build one or more variants of“this is how the average modified WCA looks like”. Feedback provider 374may also filter and unify changes, e.g. filter out mere layout changes(moving/resizing components) which are less likely to create versionincompatibility.

As discussed herein above, system 200 may also employ ghosting andmasquerading techniques. These may be applicable when site designer 62changes a WCA element or component which immediately causes a break incode or when an update from WBS vendor 61 causes a break. Ghost module375 and masquerader 376 may compensate for these breaks once they havebeen made.

Ghosting represents the ability of WCA module 300 (i.e. multiple partssuch as WCA site viewer 320, in-site editor 330 and others directed byghost module 375 as described in more detail herein below) to run thecode of a WCA and ensure it works even if sub-components have beenremoved from a specific WCA instance. For example, the user may haveremoved the “play” button from the video player instance, but the WCAcode will continue to work against a “ghost” version of that component,even though it is not present in the actual WCA instance.

As discussed herein above, a designer 62 using the WCA (when building asite) may update the WCA at the instance level, and such updates mayinclude removal of internal WCA components. Ghost module 375 may ensurethat code functionality is retained despite such changes by simulating(also known as “ghosting”) a removed (typically internal) component asdescribed in more detail herein below. Ghost module 375 may also performthis across the level of containment or WCA nesting. For example, a WCAA may include a WCA AB. A site designer 62 may deploy WCA A in his siteW but remove WCA AB inside it. Ghost module 375 may provide the requiredsimulation so that WCA A (and the containing site W) may continue tofunction properly. This would also occur even with an additional levelof WCA nesting.

It will be appreciated that in some scenarios, the WCA developer 64 mayencapsulate the WCA code, forbidding designers 62 from accessing orchanging this code (e.g. to prevent cases in which the designer willbreak this code, to prevent access to trade secrets or access keysdetailed in the code or for some other reasons).

In other scenarios, the WCA developer 64 may open the WCA code forupdates by designer 62, and designer 62 may be able to update the WCA'scode in parallel with the changes to the components included in the WCA.However, even in these cases, designer 62 may refrain from updating thecode (since he may lack the skills to do so).

In some scenarios, discrepancies between the WCA structure and the codemay arise, e.g., when a WCA X refers to a component C which does notexist in the WCA X component set. This could occur (for example) becausethe designer 62 has deleted C in WCA X or because n changed version v2of the code for WCA X has been installed replacing the existing v1 code(without updating X's component set in parallel), and the v2 code uses anew component C added in v2 to the existing X component set.

This could also occur with multiple components simultaneously, i.e.,ghost module 375 may be required to ghost multiple components in thesame WCA. Under this process, ghost module 375 may simulate some of thebehaviors of such missing components, allowing the code referring tothem to continue working even if the component(s) themselves aremissing.

For example, the code embedded in a WCA may assume the existence of a(now missing) image sub-component XX, and set its source via a codestatement such as:

XX.image.source=“xx.kg”;

Ghost module 375 may use the WCA general definition to determine what todo (if the image component was removed), and does not have to rely juston the information available in the WCA instance. Ghost module 375 mayalso use additional sources of information, such as the site experience(i.e. the actual behavior and usage history of the WCA stored in CMS 50)as discussed in more detail herein below.

As another example, when trying to use the value of a component that hasbeen deleted in the current instance, ghost module 375 may use a defaultvalue from the original WCA definition, even if such value is notgenerally shown to the user in the field.

Ghost module 375 may also have substantial information about the missingcomponent from the original WCA, the site itself and possibly fromexplicit hints specified by WCA developer 64. Ghost module 375 may alsouse editing history and business intelligence (for the current site andpossibly other sites, such as sites using the same WCA). Ghost module375 may also employ AI techniques to analyze such collected information.For example, system 200 may train an AI model on the behavior of a givencomponent, i.e. what outputs it produces and under what conditions(given specific inputs or otherwise) it functions. Such a model may betrained with context information (e.g. details about the containing WCAand site), user parameters, site parameters and other information in CMS50. The AI model may then provide the information needed to drive thesimulation of the ghosted component (input responses, excepted outputsetc.).

It will be appreciated that such derived information and behaviorcreated for the (now deleted) component may include the missingcomponent type, its properties, its default value, and default behavior.It can also include any of the component's edit-time attributes (data,layout, design), and run-time API (properties, functions, events).

Ghosting is typically performed as part of the editing process, as thisis the point at which associated code is created which may use missingcomponents. In a typical embodiment, ghost module 375 creates a “model”(representing the site elements) for the associated code to workagainst.

When a ghost element is required, ghost module 375 may fetch theoriginal definition, structure, and attributes of a missing element andmay simulate how some of the APIs work so that they remain coherent(e.g. missingElement.hide( ) will return as if the element wassuccessfully hidden).

Ghost module 375 may retrieve the required information from a number ofsources such as the original “master copy” (i.e., the “factory settings”pre-modification WCA as provided by WCA developer 64), the actualversion of the component and the data that was in the component on thesite before it was deleted or a merged version of the two.

In an alternative embodiment, ghost module 375 may provide thecomponent's behavior based on gathered data about it (includingobserving behavior during run-time on various instances of the relevantWCA and simulated component).

In a function related to ghosting, system 200 may provide a userinterface allowing the WCA user to re-establish components deleted froma WCA. Thus, the user may select WCA components deleted in the currentWCA instance, and return them into the WCA based on their “factorysettings” or on the setting and content used by the components whendeleted.

Masquerader 376 may provide the ability for a component of a given typeto behave as a component of another type, known as “masquerading”.Masquerader 376 may therefore safeguard compatibility between an elementthat has been replaced and the element replacing it as required (e.g.,by the replaced element's environment).

An example is a user changing the type of an internal WCA component fromtype A to type B (e.g., changing gallery type from a slider gallery to amatrix gallery). Another example would be replacing a picture gallerycomponent with a database component which may not have the gallerydisplay, but can still provide the “list of items” functionality.

Masquerader 376 may provide a translation facility for interactionbetween various elements in system 200 and component types, such asusing specific translation drivers provided by the code implementing thetwo gallery types (in the example above). Thus masquerader 376 mayprovide the B-type component (the new type) with the ability masqueradeas an A-type component (the old type) for some or all relevantinteractions. Such translation drivers may translate the input andoutput messages and events implemented by the various components, andmay also implement common or standardized message and event format. Inthe example above, masquerader 376 may define a set of common gallerymessage and event formats, and may use specific translation drivers inorder to let the gallery components masquerade as gallery components ofother types. Masquerader 376 may perform additional translation andmodification of translated messages and events based on parameters andinformation related to the containing WCA and site, user parameters andother system information in CMS 50.

In addition to explicit type change by the user, masquerader 376 mayprovide interaction translation capabilities for other cases in which acomponent may be required to function (masquerade) as though it wasanother related component. Examples may include two components that arerelated via their defined role (e.g. an image and a button may both beassigned the role ‘playButton’) and two components that are related byinheriting a common functionality or set of capabilities from a commonancestor, e.g. components X and Y which both support the capabilities of‘ProductGallery’ though inheritance (even though they are otherwisedifferent).

As discussed herein above, ML/AI module 379 and in particular elementbehavior ML/AI module 3794 may provide support for the functionality ofghost module 375 and masquerader 376 by learning component and codebehaviors and providing the required component/code behaviors andinformation translation.

Reference is now made to FIGS. 13A to 13E which illustrate an exampleuser interface for manipulation of WCAs inside WCA site in-editor 330 aspart of the Wix platform by Wix.com, Ltd.

FIG. 13A illustrates a sample stock chart WCA.

FIG. 13B illustrates a sample stock chart WCA with a WCA-specificsetting dialog open, allowing site designer 61 to specify the stocksymbol (WIX) and the change alert threshold (2%) to be used by this WCA.

FIG. 13C illustrates a sample stock chart WCA in which the“percentChange” sub-component has been deleted, and the “Add elements”dialog has been opened, allowing the deleted element to be restored, orthe latest official look to be applied.

FIG. 13D illustrates a sample weather WCA with its own WCA-specificsetting dialog open (including city and country).

FIG. 13E illustrates a sample weather WCA in which the focus is on thetext field displaying the temperature. The text field has the regular“edit text” options, as well as a “connect to data option”.

As discussed herein above, WCA developer 64 may establish (by settingthe appropriate UCA rules) if a new WCA version is a regular version(which may be modified through user changes) or a major upgrade which isnot backward compatible with the previous WCA version. A major upgrademay force the WCA user (i.e. site designer 62) to return to anunmodified “factory settings” WCA version (based on the new version inthis case).

In some scenarios, the user may select to update the code from version 1to version 2 without updating the structure (i.e. leaving the structureat version 1 or at a modified version 1a). As the version 1 structure isnot changed, the WCA may be missing some elements of the version 2structure. In such a case, ghost module 375 may click-in, providingghosted fields that are required by the version 2 code. Thus, the codecan reference the missing components;

It will be appreciated that the gathering of information for ghosting isalso useful during the WCA building and testing phases by the WCAdeveloper 64. The WCA designer may want to preview and run the WCA codewhile building the WCA, and in an alternative embodiment, system 200 mayprovide a testing environment for WCA's.

The ability of system 200 to collect information about the specificinteractions made by WCA sub-components may allow WCAs to berealistically tested. Such testing may include streams of interactionsassociated with the sub-components, as well as other environmentalaspects which will determine how the WCA will run (what user is loggedin, with what role, geographic location, etc.)

System 200 may allow the user to provide such interaction andenvironmental information via WCA in-site editor 330 or WCA app builder360 may generate appropriate values in order to test the WCAs usingadditional or alternative data.

WCA in-site editor 330 and WCA app builder 360 may also provide supportfor creating database connections during editing by offering potentialfields in the pertinent database to connect to via data mining of thepossible field options. Database connector 377 may check for field typesand previous connections made by the same user or other users of thesame WCA. This may be done at the WCA creation by WCA developer 64. WCAdesigner 62 may also bind an element in the WCA to the value of aproperty passed into it. For example, the property ‘city name’ may bebound to the element in weather WCA showing the name of the city. WCAdesigner 62 may also bind an element in the WCA to data from a databasethat is also packaged and installed with the WCA (also known as a“collection”). This may be done during WCA usage time by the user.

The WCA user may bind the properties of a WCA to a value from thedatabase, so that value is passed into the WCA when it runs. Forexample, a website may have a dynamic page showing a city's details, andthe city property of the weather WCA placed on that page is bound to thecity name in the site's database.

As discussed herein above, some databases known as collections, may bebundled with the WCA itself. Collections are typically the smallerdatabases, as larger databases may typically be served from the websitebuilding system server, the WCA provider server, or a separate externalserver and cannot be included in the displayed page.

Therefore the database may be specific to the installed WCA instance,i.e., a separate copy may exist for each WCA instance. The databasecould be included in the page containing the WCA (this typically happensfor smaller WCAs). The database could also be specific to the website(or a set of related websites) and thus shared between multipleinstances of the WCA in the same website (or related sites) or begeneric to the WCA and accessible by multiple instances of the WCA,possibly from multiple unrelated websites.

Database connector 377 may track the amount of data in a given database,recommend the user to convert an (internal) collection to an (external)database, or vice versa and provide seamless conversion in bothdirections.

As discussed herein above, the WCA may be characterized by an API thataccesses its functionality. API handler 378 may allow a WCA user toswitch between multiple WCAs which have identical (or similar) APIs.System 200 may typically provide a default implementation or version ofthe WCA, and may also offer alternative WCAs (e.g. through objectmarketplace 15).

WCA Appstore Manager 315 may combine such a selection by API conformancewith selection by other WCA parameters when searching through the AppStore of system 200 (or another object marketplace 15 embodiment), suchas fit to the containing page (based on design/style matching or otherparameters).

For example, the creators of a store-front e-commerce vertical mayinclude a specific product WCA to display product details. A sitedesigner 62 using the vertical application may locate an alternateproduct widget which can be used interchangeably with the original oneas long as the relevant API calls exist in both.

Thus a WCA comprising all different types of sub elements and code, maybe copied, modified and manipulated. It may have different versionsmerged and may have the ability to continue functioning afterelements/code are removed or changed by using ghosting and masqueradingtechniques.

Unless specifically stated otherwise, as apparent from the precedingdiscussions, it is appreciated that, throughout the specification,discussions utilizing terms such as “processing,” “computing,”“calculating,” “determining,” or the like, refer to the action and/orprocesses of a general purpose computer of any type, such as aclient/server system, mobile computing devices, smart appliances, cloudcomputing units or similar electronic computing devices that manipulateand/or transform data within the computing system's registers and/ormemories into other data within the computing system's memories,registers or other such information storage, transmission or displaydevices.

Embodiments of the present invention may include apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the desired purposes, or it may comprise a computingdevice or system typically having at least one processor and at leastone memory, selectively activated or reconfigured by a computer programstored in the computer. The resultant apparatus when instructed bysoftware may turn the general purpose computer into inventive elementsas discussed herein. The instructions may define the inventive device inoperation with the computer platform for which it is desired. Such acomputer program may be stored in a computer readable storage medium,such as, but not limited to, any type of disk, including optical disks,magnetic-optical disks, read-only memories (ROMs), volatile andnon-volatile memories, random access memories (RAMs), electricallyprogrammable read-only memories (EPROMs), electrically erasable andprogrammable read only memories (EEPROMs), magnetic or optical cards,Flash memory, disk-on-key or any other type of media suitable forstoring electronic instructions and capable of being coupled to acomputer system bus. The computer readable storage medium may also beimplemented in cloud storage.

Some general purpose computers may comprise at least one communicationelement to enable communication with a data network and/or a mobilecommunications network.

The processes and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general-purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct a more specializedapparatus to perform the desired method. The desired structure for avariety of these systems will appear from the description below. Inaddition, embodiments of the present invention are not described withreference to any particular programming language. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the invention as described herein.

While certain features of the invention have been illustrated anddescribed herein, many modifications, substitutions, changes, andequivalents will now occur to those of ordinary skill in the art. It is,therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the true spiritof the invention.

What is claimed is:
 1. A website building system, the system comprising:at least one database storing website components, together withdefinitions and instances of website building system configurableapplications (WCAs), wherein said WCAs are single packaged entitieswhich can also be accessed as a sets of customizable elements; a WCA appbuilder to enable a developer to build and edit a first version WCA; anin-site editor to provide specific editing capabilities for a user toedit at least one of a definition or an instance of said first versionWCA; a WCA handler to receive at least one modification to said firstversion WCA from said user and at least one update to said first versionWCA from said developer, said WCA handler to merge at least between saidat least one modification and said at least one update to create achanged WCA, said WCA handler to also resolve conflicts or loss offunctionality and to handle permissions between said least onemodification and said at least one update; and a WCA site viewer tosupport viewing of said first version WCA and said changed WCA duringruntime of said website building system.
 2. The system according toclaim 1 wherein said at least one database also stores websiteparameters for websites built by said website building system and usercollected information for a user of said website building system,wherein said user collected information is at least one of: geographicallocation, language, editing history and collected business intelligence.3. The system according to claim 1 wherein said WCA handler comprises atleast one of: a ghost module to ensure operation of said changed WCA asa result of a removed element from said first version WCA by at leastone of: said at least one modification, said at least one update and acombination thereof; and a masquerader to safeguard compatibilitybetween a replaced element and the replacing element of said changed WCAas a result of at least one of: said at least one modification, said atleast one update and a combination thereof to ensure operation of saidchanged WCA.
 4. The system according to claim 3 wherein said ghostmodule performs at least one of: fetching the original definition,structure, and attributes of said removed component, providing some orall of the behavior of said removed component based on said usercollected information and simulating an API for said removed component.5. The system according to claim 3 wherein said masquerader provides atranslation facility for interaction between elements of said changedWCA and said replacing element using specific translation drivers basedon said website parameters and said user collected information.
 6. Thesystem according to claim 1 and also comprising: a WCA manager toprovide management services for said first version WCA and said changedWCA within said website building system; a WCA CMS coordinator to accessat least said website components and said user collected informationfrom said least one database; and said WCA handler to coordinateactivity between said WCA app builder, said WCA manager, said WCA siteviewer, said WCA in-site editor and said WCA CMS coordinator.
 7. Thesystem according to claim 1 wherein said WCA app builder comprises: acustomization panel creator to configure and generate associatedspecific customization panels for a WCA; a dialog editor to enable thecreation and editing of definitions for customizable elements for a WCA;and a WCA analyzer to perform at least one of: recognize repeating orhierarchical elements in the structure of a WCA; perform static sourceanalysis on a WCA for said customization panel creator; perform staticsource analysis to determine runtime permissions for a WCA and togenerate template code.
 8. The system according to claim 3 and alsocomprising at least one of: a WCA modification handler to receive andresolve conflicts between said at least one modification and said atleast one update for said first version WCA; a machine learner(ML)/artificial intelligence (AI) module to employ machine learning andartificial intelligence techniques to provide support for saidresolution of said conflicts and said loss of functionality for saidghost module and said masquerader and to provide merging support forsaid WCA modification handler; an Application Programming Interface(API) handler to replace at least said first version WCA with at leastone other WCA having an identical or similar API; an alert provider toprovide alerts regarding implementation and use of said WCA handler; afeedback provider to gather information and provide analysis on generalWCA instance changes; and a database connector to check for field typesand previous connections made by said user or other users of said atleast one WCA.
 9. The system according to claim 8 wherein said WCAmodification handler comprises: an update receiver to receive said atleast one modification and said at least one update to said firstversion WCA; an API analyzer to analyze the pre-packaged API of anexisting WCA to detect the API properties and interfaces and to generatea matching settings panel for a changed version of said WCA; a WCAmerger to merge said at least one modification and said at least oneupdate to create said changed WCA from said first version WCA; a changeresolver to resolve conflicts between said at least one modification andsaid at least one update; a permission determiner to determine and applyany permission restrictions for said at least one modification and saidat least one update and to determine any permissions required at runtimefor said changed WCA; and a change applier to apply said at least onemodification and said at least one update to said first version WCAaccording to said WCA merger, said change resolver and said permissiondeterminer to create said changed WCA.
 10. The system according to claim9 wherein said WCA merger comprises: a difference analyzer to gather andanalyze the change set between said at least one modification and saidat least one update; and a conflict resolver to resolve conflictsbetween said at least one modification and said at least one update. 11.The system according to claim 1 and wherein said at least one update isaccording to user change acceptance rules regarding WCA components andtheir attributes.
 12. The system according to claim 9 wherein said WCAmerger merges according to at least one of: developer or user hints,semantic tags and the output of said decision engine.
 13. A method for awebsite building system, the method comprising: storing in at least onedatabase, website components, together with definitions and instances ofwebsite building system configurable applications (WCAs), wherein saidWCAs are single packaged entities which can also be accessed as a setsof customizable elements; enabling a developer to build and edit a firstversion WCA; providing specific editing capabilities for a user to editat least one of a definition or an instance of said first version WCA;receiving at least one modification to said first version WCA from saiduser and at least one update to said first version WCA from saiddeveloper; merging at least between said at least one modification andsaid at least one update; resolving conflicts or loss of functionalityand handling permissions between said least one modification and said atleast one update; creating a changed WCA from said merging, saidresolving and said handling permissions; and supporting viewing of saidfirst version WCA and said changed WCA during runtime of said websitebuilding system.
 14. The method according to claim 13 wherein saidstoring also stores website parameters for websites built by saidwebsite building system and user collected information for a user ofsaid website building system, wherein said user collected information isat least one of: geographical location, language, editing history andcollected business intelligence.
 15. The method according to claim 13wherein said receiving, merging, resolving conflicts and handlingpermissions comprises at least one of: ensuring operation of saidchanged WCA as a result of a removed element from said first version WCAby at least one of: said at least one modification, said at least oneupdate and a combination thereof; and safeguarding compatibility betweena replaced element and the replacing element of said changed WCA as aresult of at least one of: said at least one modification, said at leastone update and a combination thereof to ensure operation of said changedWCA.
 16. The method according to claim 15 wherein said ensuringoperation of said changed WCA as a result of a removed element comprisesperforming at least one of: fetching the original definition, structure,and attributes of said removed component, providing some or all of thebehavior of said removed component based on said user collectedinformation and simulating an API for said removed component.
 17. Themethod according to claim 15 wherein said safeguarding compatibilitycomprises providing a translation facility for interaction betweenelements of said changed WCA and said replacing element using specifictranslation drivers based on said website parameters and said usercollected information.
 18. The method according to claim 13 and alsocomprising: providing management services for said first version WCA andsaid changed WCA within said website building system; accessing at leastsaid website components and said user collected information from saidleast one database; and coordinating activity between said enabling adeveloper, said receiving, merging, resolving conflicts and handlingpermissions, said providing management services, said providing specificediting capabilities, said supporting viewing and said accessing. 19.The method according to claim 13 wherein said enabling a developer tobuild and edit a first version WCA comprises: configuring and generatingassociated specific customization panels for a WCA; enabling thecreation and editing of definitions for customizable elements for a WCA;and performing at least one of: recognizing repeating or hierarchicalelements in the structure of a WCA; performing static source analysis ona WCA for said configuring and generating associated specificcustomization panels; performing static source analysis to determineruntime permissions for a WCA and generating template code.
 20. Themethod according to claim 15 and also comprising at least one of:receiving and resolving conflicts between said at least one modificationand said at least one update for said first version WCA; employingmachine learning and artificial intelligence techniques to providesupport for said resolution of said conflicts and said loss offunctionality for said ensuring operation of said changed WCA as aresult of a removed element and said safeguarding compatibility and toprovide merging support for said receiving and resolving conflicts;replacing at least said first version WCA with at least one other WCAhaving an identical or similar API; providing alerts regardingimplementation of said receiving, merging, resolving conflicts andhandling permissions; gathering information and providing analysis ongeneral WCA instance changes; and checking for field types and previousconnections made by said user or other users of said at least one WCA.21. The method according to claim 20 wherein said receiving andresolving conflicts comprises: receiving said at least one modificationand said at least one update to said first version WCA; analyzing thepre-packaged API of an existing WCA, detecting the API properties andinterfaces and generating a matching settings panel for a changedversion of said WCA; merging said at least one modification and said atleast one update to create said changed WCA from said first version WCA;resolving conflicts between said at least one modification and said atleast one update; determining and applying any permission restrictionsfor said at least one modification and said at least one update anddetermining any permissions required at runtime for said changed WCA;and applying said at least one modification and said at least one updateto said first version WCA according to said merging, said resolvingconflicts and said determining and applying any permission restrictionsand creating said changed WCA.
 22. The method according to claim 21wherein said merging comprises: gathering and analyzing the change setbetween said at least one modification and said at least one update; andresolving conflicts between said at least one modification and said atleast one update.
 23. The method according to claim 1 and wherein saidat least one update is according to user change acceptance rulesregarding WCA components and their attributes.
 24. The method accordingto claim 21 wherein said merging merges according to at least one of:developer or user hints, semantic tags and the output of said decisionengine.